Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   value для элемента массива (https://javascript.ru/forum/misc/11551-value-dlya-ehlementa-massiva.html)

Aspiring 30.08.2010 19:05

value для элемента массива
 
for (n=0; n<10; n++) {

a[n] = document.createElement('input');

a[n].onclick = 't = event.target; t.value = "X"';

document.getElementById('mytable').appendChild(a[n]);
}


При клике ничего не происходит. Как правильно написать событие?

Sweet 30.08.2010 19:13

a[n].onclick = function(){
  t = event.target;
  t.value = "X"';
}
События пишутся вот так

Aspiring 30.08.2010 19:24

Sweet,
от этого ничего не меняется

exec 30.08.2010 19:28

a[n].onclick = function ( e ) {
	(e || window.event)[-[1,] ? 'target' : 'srcElement'].value = 'X';
};


Кстати, (e || window.event)[-[1,] ? 'target' : 'srcElement'] можно заменить на this.

Sweet 30.08.2010 19:52

Цитата:

Сообщение от Aspiring
от этого ничего не меняется

Ты же спросил, "Как правильно написать событие?":) У тебя не работает, потому что в ie есть свойтво srcElement, а не target. А вообще, послушай умных людей: исползуй this
Цитата:

Сообщение от exec
(e || window.event)[-[1,] ? 'target' : 'srcElement'].value = 'X';

Ну ты завернул:)

Aspiring 30.08.2010 19:58

Sweet,
ну ты ведь тоже написал с target :)

exec, спасибо))

Незнаю почему, но функция почему-то действует только на последний ряд.

for (n=0; n<(rows*cols); n++) {
a[n] = document.createElement('input');
a[n].onclick = function () { 
    this.value = 'X'; 
};
for (k=1; k<=cols; k++) {
		if (n == k*cols)  document.getElementById('mytable').innerHTML += '<br />' ;
		}		
		
	document.getElementById('mytable').appendChild(a[n]);

Sweet 30.08.2010 20:14

Цитата:

Сообщение от Aspiring
ну ты ведь тоже написал с target

Я даже не смотрел внутрь функции:)
UPD:
Цитата:

Сообщение от Aspiring
функция почему-то действует только на последний ряд

Опять же не читал код (лениво), но обычно проблема решается после понимания вот этого

Aspiring 31.08.2010 15:45

Проблема этим не решилась

Aspiring 31.08.2010 15:54

А если попробывать
document.getElementById('mytable').innerHTML += a[n] ,
то появляется только надписи [object HTMLInputElement]

Sweet 31.08.2010 16:13

<table border="1" cellspacing="0" cellpadding="4">
  <tr><td></td><td></td></tr>
  <tr><td></td><td></td></tr>
</table>
<script>
var cells = document.getElementsByTagName('td'), a = []
for(var i = 0, len = cells.length; i < len; i++){
  a[i] = document.createElement('input')
  a[i].onclick = function(){
    this.value = 'Clicked!'
  }
  cells[i].appendChild(a[i])
}
</script>


Почитай тут. Особенно 4й пункт

Aspiring 05.09.2010 17:52

Sweet, спасибо за код, но у меня таблица создается добавлением в HTML код тега <br /> . Если не смогу решить как я хотел изначально, попробую создать таблицу на tr и td.

document.getElementById('mytable').innerHTML += '<br />' - из-за этого почему то onclick действует только на последний ряд. Кто-нибудь знает почему и как этого избежать?


Часовой пояс GMT +3, время: 06:25.