Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 30.08.2010, 19:05
Интересующийся
Отправить личное сообщение для Aspiring Посмотреть профиль Найти все сообщения от Aspiring
 
Регистрация: 23.08.2010
Сообщений: 27

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]);
}


При клике ничего не происходит. Как правильно написать событие?
Ответить с цитированием
  #2 (permalink)  
Старый 30.08.2010, 19:13
Профессор
Отправить личное сообщение для Sweet Посмотреть профиль Найти все сообщения от Sweet
 
Регистрация: 16.03.2010
Сообщений: 1,618

a[n].onclick = function(){
  t = event.target;
  t.value = "X"';
}
События пишутся вот так
Ответить с цитированием
  #3 (permalink)  
Старый 30.08.2010, 19:24
Интересующийся
Отправить личное сообщение для Aspiring Посмотреть профиль Найти все сообщения от Aspiring
 
Регистрация: 23.08.2010
Сообщений: 27

Sweet,
от этого ничего не меняется
Ответить с цитированием
  #4 (permalink)  
Старый 30.08.2010, 19:28
Профессор
Отправить личное сообщение для exec Посмотреть профиль Найти все сообщения от exec
 
Регистрация: 21.01.2010
Сообщений: 1,022

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


Кстати, (e || window.event)[-[1,] ? 'target' : 'srcElement'] можно заменить на this.
Ответить с цитированием
  #5 (permalink)  
Старый 30.08.2010, 19:52
Профессор
Отправить личное сообщение для Sweet Посмотреть профиль Найти все сообщения от Sweet
 
Регистрация: 16.03.2010
Сообщений: 1,618

Сообщение от Aspiring
от этого ничего не меняется
Ты же спросил, "Как правильно написать событие?" У тебя не работает, потому что в ie есть свойтво srcElement, а не target. А вообще, послушай умных людей: исползуй this
Сообщение от exec
(e || window.event)[-[1,] ? 'target' : 'srcElement'].value = 'X';
Ну ты завернул

Последний раз редактировалось Sweet, 30.08.2010 в 19:54.
Ответить с цитированием
  #6 (permalink)  
Старый 30.08.2010, 19:58
Интересующийся
Отправить личное сообщение для Aspiring Посмотреть профиль Найти все сообщения от Aspiring
 
Регистрация: 23.08.2010
Сообщений: 27

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]);
Ответить с цитированием
  #7 (permalink)  
Старый 30.08.2010, 20:14
Профессор
Отправить личное сообщение для Sweet Посмотреть профиль Найти все сообщения от Sweet
 
Регистрация: 16.03.2010
Сообщений: 1,618

Сообщение от Aspiring
ну ты ведь тоже написал с target
Я даже не смотрел внутрь функции
UPD:
Сообщение от Aspiring
функция почему-то действует только на последний ряд
Опять же не читал код (лениво), но обычно проблема решается после понимания вот этого

Последний раз редактировалось Sweet, 30.08.2010 в 20:17.
Ответить с цитированием
  #8 (permalink)  
Старый 31.08.2010, 15:45
Интересующийся
Отправить личное сообщение для Aspiring Посмотреть профиль Найти все сообщения от Aspiring
 
Регистрация: 23.08.2010
Сообщений: 27

Проблема этим не решилась
Ответить с цитированием
  #9 (permalink)  
Старый 31.08.2010, 15:54
Интересующийся
Отправить личное сообщение для Aspiring Посмотреть профиль Найти все сообщения от Aspiring
 
Регистрация: 23.08.2010
Сообщений: 27

А если попробывать
document.getElementById('mytable').innerHTML += a[n] ,
то появляется только надписи [object HTMLInputElement]
Ответить с цитированием
  #10 (permalink)  
Старый 31.08.2010, 16:13
Профессор
Отправить личное сообщение для Sweet Посмотреть профиль Найти все сообщения от Sweet
 
Регистрация: 16.03.2010
Сообщений: 1,618

<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й пункт
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проверка массива на наличие элемента Скриптор Общие вопросы Javascript 16 10.09.2012 18:00
onClick эвент для всего документа, кроме отдельно взятого элемента DOM el_erizo Events/DOM/Window 5 19.03.2010 15:09
эмуляция события click для элемента select Polo Events/DOM/Window 4 16.12.2009 13:29
Можно ли как для произвольного массива создавать вызовы функций , имеющих на входе kefi Общие вопросы Javascript 3 17.04.2009 16:53
Применение функции для каждого элемента sergeygerasimov jQuery 2 26.11.2008 11:15