Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > document.close()


Автор: Snik 2.11.2007, 20:56
Подскажите почему если в базу добавляю хоть один элемент то objWin.document.close();    как будто не срабатывает и типа грузит страницу ?
хотя если вызвать function showAll()  и в массиве нет элементов то все в норме!
Полный код ниже:

Код

 <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title>Уважність</title>
        <script type="text/javascript" >
                //Глобальные переменные
                var i = 0;
                var ArObject = new Array();        
                                                
                //Класс объекта    
                function elBase(Name , Tel , BDate) {
                    this.Name = Name;
                    this.Tel = Tel;
                    this.BDate = BDate;
                    this.show = show;
                }
            
                function add(Name , Tel , BDate) {
                    ArObject[i] = new elBase(Name , Tel , BDate);  
                }
               
               function insertRecord() {
                   Name = document.form1.wrName.value;
                   Tel =  document.form1.wrTel.value;
                   BDate = document.form1.wrBDate.value;
                   i++;
                   add(Name , Tel , BDate);
                   //Очистка полей
                   document.form1.wrName.value = "";
                   document.form1.wrTel.value = "";
                   document.form1.wrBDate.value = "";   
                }
               
               function showAll() {
                    objWin = window.open("", "WS","toolbar=0,width=1000,height=1000,resizable=1");
                    objWin.document.write('<table style="border: 3px dashed rgb(0, 135, 207);" align="center" cellpadding="10" frame="box" rules="all" width="70%">');
                    objWin.document.write('<CAPTION><h1>Дні народження друзів</h1></CAPTION>');
                    objWin.document.write('<tr>');
                    objWin.document.write('<td align="center" valign="top" width="50%"><b><i>П.І.П.</i></b></td>');
                    objWin.document.write('<td align="center" valign="top" width="10%"><b><i>ТЕЛЕФОН</i></b></td>');
                    objWin.document.write('<td align="center" valign="top" width="10%"><b><i>День народження</i></b></td>');
                    objWin.document.write('</tr>');
                    for(var q=1; ArObject.length; q++)
                        {
                            objWin.document.write('<tr>');
                            objWin.document.write('<td valign="top"><p align="center"><b>'+ArObject[q].Name+'</b></p></td>');
                            objWin.document.write('<td valign="top"><p align="center"><b>'+ArObject[q].Tel+'</b></p></td>');
                            objWin.document.write('<td valign="top"><p align="center"><b>'+ArObject[q].BDate+'</b></p></td>');
                            objWin.document.write('</tr>');
                        }
                    objWin.document.write('</table>');    
                    objWin.document.close();       
                }
        </script>
        <noscript>Зоборона javascript !</noscript>
    </head>
    <body>
        <h1>Назабудьмо друзів!</h1>
        <p>Внесітьу базу друзів у формі, приведеній нижче, та натисніть кнопку "Додати". Для перегляду усього списку друзів натисніть кнопку "Перегляд усіх".</p>
        <form name = "form1">
            <table>
                    <tr>
                        <td>П.І.Б</td>
                        <td><input type="text" size="70" maxlength="256" name="wrName"> </td>
                    </tr>
                    <tr>
                        <td>ТЕЛЕФОН</td>
                        <td><input type="text" size="30" maxlength="256" name="wrTel"> </td>
                    </tr>
                    <tr>
                        <td>День народження</td>
                        <td><input type="text" size="30" maxlength="256" name="wrBDate"> </td>
                    </tr>
                    <tr>
                        <td></td>
                        <td>
                          <input type="button" name="Add" value="Додати" onclick='insertRecord()' /> 
                          <input type="button" name="ShowAll" value="Перегляд усіх" onclick='showAll()' /> 
                        </td>
                    </tr>
            </table>
        </form>
    </body>
</html>


Автор: HotHead 2.11.2007, 21:20
Если вы сумеете объяснить что этот код должен делать, то ответить на ваш вопрос будет проще. На вскидку могу сказать, что цикл for(var q=1; ArObject.length; q++)  непонятен. Во-первых, счёт элементов массива начинается с нуля, во-вторых, где условие выхода из цикла? Если бы вы shift'или или pop'али массив ArObject, то прокатило бы. А так его размер всегда больше нуля, если в нём есть элементы. Лучше было бы написать for(var q=0; q < ArObject.length; q++).

И ещё не очень понятно зачем вы пытаетесь закрыть document (53 строка)? Наверное objWin.close(); имелось в виду?

Автор: Snik 2.11.2007, 21:54
Cпасибо !  

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)