Javascript, почему этот простой счетчик не работает в моем цикле - PullRequest
0 голосов
/ 10 марта 2011

У меня есть функция, которая называется кнопка, и она добавляет таблицу с помощью цикла. Я изменил цикл так, чтобы он назначал идентификатор каждому <td>, который он делает. Однако, похоже, что он работает неправильно.

Здесь это в действии, следуйте приведенному ниже сценарию использования, чтобы проверить его: http://jsfiddle.net/JEAkX/19/

Вот простой пример использования, который я использую для проверки:

  1. Изменить букву в ячейке
  2. Нажмите «Подробнее»
  3. Изменить букву в одной из новых ячеек

Он должен функционировать так же, как и исходные ячейки, если идентификатор был назначен правильно.

Счетчик: var n = 13;

и он вставляется в добавленную ячейку следующим образом:

cell.innerHTML = "<input type='text' id='r"+ (n) +"' size='1' onChange='getPos('r"+ (n++) +"'), modifyCells('alphabetTable')' value='" + subset[i++] + "' />"`

Это источник DOM, который я получаю:

<td><input id="r13" size="1" onchange="getPos(" r14="" ),="" modifycells(="" alphabettable="" )="" value="q" type="text"></td>
<td><input id="r14" size="1" onchange="getPos(" r15="" ),="" modifycells(="" alphabettable="" )="" value="r" type="text"></td>

Я подозреваю, что это связано с тем, что все записывается в одну строку, как сказал @zzzzBov, но я не знаю, как еще это сделать.

Ответы [ 2 ]

3 голосов
/ 10 марта 2011

Помимо n ++, в вашем HTML есть проблема с цитированием.В атрибуте onchange есть вложенные одинарные кавычки, например:

<input type='text' id='r19' size='1' onChange='getPos('r20'), modifyCells('alphabetTable')' value='p' />

Быстрое исправление синтаксиса - использование экранированных двойных кавычек, поэтому вы можете приступить к работе: cell.innerHTML = "<input type='text' id='r"+ n +"' size='1' onChange='getPos(\"r"+ (n++) +"\"), modifyCells(\"alphabetTable\")' value='" + subset[i++] + "' />"

1 голос
/ 10 марта 2011

Несмотря на разделение HTML / CSS / JS .... Вам нужно 3 уровня кавычек.Кроме того, запятая в событии onclick должна быть точкой с запятой.

Возможно:

cell.innerHTML = "<input type='text' id='r" + n + "' size='1'
  onChange='getPos(\"r" + (n++) + "\"); modifyCells(\"alphabetTable\")'
  value='" + subset[i++] + "' />"
...