проблема innerHTML в FF, Chrome.IE в порядке - PullRequest
0 голосов
/ 09 июня 2011

У меня есть страница, где входы загружаются динамически при нажатии кнопки.Когда кнопка нажата, я добавляю исходный код к innerHTML элемента контейнера.

Так что если вы нажмете на нее один раз, он будет содержать.если вы нажмете его еще раз, он добавит второй с именем «inp-2».

Проблема в том, что если вы добавляете один ввод, вы заполняете его каким-то текстом, то вы снова нажимаете кнопку добавления, вставленный текст исчезает, потому что - по крайней мере, я так думаю - он сохраняет оригиналinnerHTML, который не содержит вставленный текст.Это происходит в FF, Chrome.в IE он работает нормально, потому что innerHTML в IE обновляется по интерактивности пользователя;если вы заполните ввод, то вы увидите исходный код, а затем увидите, что ваш текст находится в атрибуте значения ввода, а не в FF или Chrome.

Что вы предлагаете, как это можно решить всамый быстрый и эффективный способ?Имейте в виду, что я упростил код до одного ввода, но для каждого нажатия кнопки к внутреннему HTML добавляется огромный исходный код (1 таблица, содержащая trs, tds, около 9 входов и текст).спасибо

1 Ответ

0 голосов
/ 09 июня 2011

Если вы хотите продолжить использовать .innerHTML, вместо методов DOM, которые будут фактически добавлять узлы, вам нужно будет добавить обработчики событий «change» к этим входам.Браузеру не требуется синхронизировать атрибут value и свойство value <input/>, но ваш обработчик событий может сделать это кросс-браузерным способом.

Попробуйте что-то подобное.InnerHTML должен обновляться каждый раз, когда обновляется атрибут.

node.innerHTML += '<input name="inp-#" value="starting_value" onchange="this.setAttribute(\'value\',this.value);" />';
...