The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"JavaScript Objects : проблема в Mozilla / Linux"
Вариант для распечатки Архивированная нить - только для чтения! 
Пред. тема | След. тема 
Форумы WEB технологии (Public)
Изначальное сообщение [Проследить за развитием треда]

"JavaScript Objects : проблема в Mozilla / Linux"
Сообщение от ive emailИскать по авторуВ закладки on 23-Сен-03, 18:37  (MSK)
dear all,
вот такой код , я не пойму почему Mozilla его непереваривает (v1.0.0; deb) (IE отработал как ожидалось - значит ли это что я не так написал ? :-)

============ КОД ==========
<HEAD>
<TITL></TITLE>
<SCRIPT>

function mth_GetState() {  return this.state; }
function mth_SetState( s ) {  this.state = s; return; }
function mth_GetName() {  return this.name; }
function mth_GetImg() {  return this.image; }

function Card( name , img_name ) {
this.name = name;
this.image = img_name;
this.state = 0;
this.getState = mth_GetState;
this.setState = mth_SetState;
this.getName = mth_GetName;
this.getImg = mth_GetImg;
}

/* ===== MAIN ==== */

/* ***
function CardArray( lesson )
{
  var i = 0;
   for ( i = 0 ; i < lesson ; i++ ) {
    this[ i ] = new Card( "name" + i , "img_" + i );
     alert( "Card "+ i + "= " + this[ i ].getName() );
  }
  this[ 0 ] = new Card( "my1" , "im1" );
  this[ 1 ] = new Card( "my2" , "im2" );
  this[ 2 ] = new Card( "my3" , "im3" );
}
***** */

var Cards = new Array(
    new Card( "my1" , "im1" ),
    new Card( "my2" , "im2" ),
    new Card( "my3" , "im3" )
);

function on_load()
{
  var i = 0;
  alert( "Cards[0]=" + Cards[0].getName() + " Img=" + Cards[0].getImg() );
  alert( "Cards[1]=" + Cards[1].getName() + " Img=" + Cards[1].getImg() );
  for ( i  = 0 ; i < 3 ; i++ ) {
    alert( "i= " + i );
    document.write( "" + i +" name= "+ Cards[i].getName() + "<br> img= " + Cards[i].getImg() );
  }
}

</SCRIPT>
</HEAD>

<BODY><!-- onLoad = "on_load();"-->
<br>Hello<br>
<INPUT TYPE="button" NAME="BT" onClick='on_load();'>
</BODY>

===========================

суть в том что массив объектов инициализируеться видимо верно
( если расскоментарить конструктор CardArray и добавить alert можно увидеть что все 3 эл-та инитятся),
но в цикле виден только первый , а остальные два как бы не существуют ?! (о чем и сообщает JavaScript Console); заметте что перед циклом alert-ы показывают как минимум 2 элемента корректно проиничены... а в цикле нЭт :(

знает ли кто-нибудь в чем тут дело ?


на край :
может есть возможность у кого-нибудь попробовать код на более новых релизах Mozilla ?

Спасибо

  Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "JavaScript Objects : проблема в Mozilla / Linux"
Сообщение от vnp emailИскать по авторуВ закладки on 23-Сен-03, 21:25  (MSK)
>dear all,
>вот такой код , я не пойму почему Mozilla его непереваривает (v1.0.0;
>deb) (IE отработал как ожидалось - значит ли это что я
>не так написал ? :-)
>
>============ КОД ==========
[...]
>function on_load()
>{
>  for ( i  = 0 ; i < 3; i++ ) {
>    alert( "i= " + i );
>    document.write( "" + i +" name= "+ Cards[i].getName() + "<br> img= " + Cards[i].getImg() );
>  }
>}
>
></script>
></head>
>
><BODY><!-- onLoad = "on_load();"-->
><br>Hello<br>
><INPUT TYPE="button" NAME="BT" onClick='on_load();'>
></body>
>
>===========================
>
>суть в том что массив объектов инициализируеться видимо верно
>( если расскоментарить конструктор CardArray и добавить alert можно увидеть что все
>3 эл-та инитятся),
>но в цикле виден только первый , а остальные два как бы
>не существуют ?! (о чем и сообщает JavaScript Console); заметте что
>перед циклом alert-ы показывают как минимум 2 элемента корректно проиничены... а
>в цикле нЭт :(
>
>знает ли кто-нибудь в чем тут дело ?

Если вы уберете document.write, то увидите все 3 алерта (можно не объяснять, правда же?). Разница между IE и Mozilla, видимо, в том, как трактуется момент вызова onLoad, т.е. до закрытия документа или после (что говорит стандарт, и есть ли он -- нэ знаю).
Уберите вызов из onLoad и встаьте его inline в нужное место:
<body>
...
<script>
on_load();
</script>
...
</body>


  Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "JavaScript Objects : проблема в Mozilla / Linux"
Сообщение от ive emailИскать по авторуВ закладки on 23-Сен-03, 21:34  (MSK)
>Если вы уберете document.write, то увидите все 3 алерта (можно не объяснять,
>правда же?). Разница между IE и Mozilla, видимо, в том, как
>трактуется момент вызова onLoad, т.е. до закрытия документа или после (что
>говорит стандарт, и есть ли он -- нэ знаю).
>Уберите вызов из onLoad и встаьте его inline в нужное место:
><body>
>...
><script>
>on_load();
></script>
>...
></body>

Нее , тут on_load - только название а загружаеться только когда кнопарь надавишь ! я ее обзову HERon_load (проверено :-) - ничего не измениться ...
а вообще я поиграю с вариантами вызова ,
спасибо !

  Рекомендовать в FAQ | Cообщить модератору | Наверх

3. "JavaScript Objects : проблема в Mozilla / Linux"
Сообщение от vnp emailИскать по авторуВ закладки on 23-Сен-03, 21:44  (MSK)

>Нее , тут on_load - только название а загружаеться только когда кнопарь
>надавишь ! я ее обзову HERon_load (проверено :-) - ничего не
>измениться ...

Разумеется, дело не в названии, а в том, что javascript не умеет изменять документ после того как он закрыт. Первый же write его опустошит... включая и самое себя...

>а вообще я поиграю с вариантами вызова ,
>спасибо !


  Рекомендовать в FAQ | Cообщить модератору | Наверх

4. "JavaScript Objects : проблема в Mozilla / Linux"
Сообщение от ive emailИскать по авторуВ закладки on 24-Сен-03, 17:26  (MSK)
>Разумеется, дело не в названии, а в том, что javascript не умеет
>изменять документ после того как он закрыт. Первый же write его
>опустошит... включая и самое себя...
... возможно в этом дело , но почему пропадают (затираються выводом write) только глобальные переменные ? а ф-ции остаються ?? вот получился такой код (без перестановки вызова ф-ции) -
я только спрятал массив объектов в ф-цию и сделал конструктор :

==========================
<HEAD>
<TITL></TITLE>
<SCRIPT>

function mth_GetState() {  return this.state; }
function mth_SetState( s ) {  this.state = s; return; }
function mth_GetName() {  return this.name; }
function mth_GetImg() {  return this.image; }

function Card( name , img_name ) {
this.name = name;
this.image = img_name;
this.state = 0;
this.getState = mth_GetState;
this.setState = mth_SetState;
this.getName = mth_GetName;
this.getImg = mth_GetImg;
}

/* ===== MAIN ==== */


function CardArray( lesson )
{
  var i = 0;
    for ( i = 0 ; i < lesson ; i++ )
      this[ i ] = new Card( "name" + i , "img_" + i );
}

function XERon_load()
{
  var ArrLen = 5;
  var Cards = new CardArray( ArrLen );
  var i = 0;
  for ( i  = 0 ; i < ArrLen ; i++ ) {
    document.write( "" + i +" name= "+ Cards[ i ] . getName() + " img= " +
                    Cards[ i ] . getImg() + "<br>" );
  }
  document.close();
}

</SCRIPT>
</HEAD>

<BODY>
<br>Hello<br>
<INPUT TYPE="button" NAME="BT" onClick='XERon_load();'>
</BODY>
=======================

теперь все работает... вроде (и закрываеться корректно - close)
Спасибо , vnp !

  Рекомендовать в FAQ | Cообщить модератору | Наверх


Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру