Jump to content
  • 0

Детская проблема по javascript


KoDA86
 Share

Question

ТОлько начинаю осваивать JS.

Вот такая проблема. Есть например страничка:

<html>

<head>

<script type="text/javascript">

var product = document.getElementById('center').getElementsByTagName('button');

for (var i=0; i<product.length; i++){

product.onclick = function(){

alert (i);

}

}

</script>

</head>

<body>

<div id="center">

<form>

<button>кнопка</button>

</form>

<form>

<button>кнопка</button>

</form>

<form>

<button>кнопка</button>

</form>

...........

</div>

</body>

</html>

В данном примере у меня почему-то не выводит на экран номер нажатой кнопки, в чем может быть проблема? Уже измучился никак не пойму. Подскажите плизз.

Link to comment
Share on other sites

5 answers to this question

Recommended Posts

  • 0

У меня выводит. Только всегда „3“.

Когда-то вопрос для меня решился предварительной записью переменной

var product = document.getElementById('center').getElementsByTagName('button');
for (var i=0; i<product.length; i++){
product[i].num = i;
product[i].onclick = function(){
alert (this.num+1);
}
}

Edited by alexandr_v-vich
Link to comment
Share on other sites

  • 0

В данном примере у меня почему-то не выводит на экран номер нажатой кнопки, в чем может быть проблема?

К моменту выполнения скрипта DOM еще не готов, браузер еще не дошел до элемента с ID center и не обработал его, поэтому первая же строчка вызовет ошибку. Чтобы поправить, перенесите элемент script и его содержимое в конец body.

Также добавлю еще один источник информации, который, возможно, поможет разобраться с проблемой, озвученной alexandr_v-vich.

Edited by troll
  • Like 1
Link to comment
Share on other sites

  • 0
У меня выводит. Только всегда „3“.

Привет! troll, привел очень правильную ссылку, посмотри если интересно. Если в двух словах, нужно юзать замыкания : )

К моменту выполнения скрипта DOM еще не готов, браузер еще не дошел до элемента с ID center и не обработал его, поэтому первая же строчка вызовет ошибку. Чтобы поправить, перенесите элемент script и его содержимое в конец body.

или используйте событие загрузки документа Событие загрузки документа "onDOMContentLoaded"

Edited by nerv
Link to comment
Share on other sites

  • 0
Привет! troll, привел очень правильную ссылку, посмотри если интересно. Если в двух словах, нужно юзать замыкания : )

Здорово, nerv :) Да меня, честно то, больше не парит это)), это я так по памяти, быстро решить вопрос.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy