замена innerHTML не отражается

Распечатайте символ возврата \b несколько раз и затем перезапишите старое число с новым числом.

5
задан Rakesh 27 July 2017 в 13:07
поделиться

6 ответов

у меня отлично работает в Firefox 3.5

Рабочая демонстрация

РЕДАКТИРОВАТЬ: Вы должны использовать IE. Вам необходимо создать новую опцию и добавить ее к элементу или изменить текст существующей опции

Working Demo - протестировано и работает в FireFox и IE 7.

var foo = document.getElementById('foo');
var select = foo.getElementsByTagName('select');
select[0].options[0].text = ' two ';
7
ответ дан 18 December 2019 в 10:47
поделиться

Лучше указать идентификатор тегу выбора и использовать новую опцию для добавления элемента.

var sel =document.getElementById ( "selectElementID" );
var elOptNew = document.createElement('option');
elOptNew.text = 'Insert' + 2;
elOptNew.value = 'insert' + 2;
sel.options.add ( elOptNew );

Если вам нужно заменить опцию

sel.options[indexNumber].text = 'text_to_assign';
sel.options[indexNumber].value = 'value_to_assign';
3
ответ дан 18 December 2019 в 10:47
поделиться

Установка innerHTML для выбора содержит ошибку в IE. Не уверен, исправили ли они это в 7 или 8. Он обрезает часть текста, который вы ему даете, и, следовательно, имеет искаженные параметры. Итак, вам нужно установить внешний HTML, который включает в себя select. Поскольку externalHTML - это только IE (или был), я обычно использую select.parentNode.innerHTML. И присваиваю ID выбранному. Но поскольку вы устанавливаете innerHTML для div, вы уже защищены. Это было просто к сведению.

Я думаю, ваша настоящая проблема в том, что replace ожидает регулярное выражение для первого аргумента. Или что элемент option не такой, как вы ожидаете. IE может использовать имя параметра с заглавной буквы и может добавлять выбранный атрибут. Вы должны предупредить innerHTML, чтобы увидеть, что это такое, прежде чем пытаться выполнить замену строки. Тогда я бы использовал правильное регулярное выражение для замены. Вероятно, вам придется избежать косой черты с помощью обратной косой черты. Я не думаю, что вам нужно избегать угловых скобок, но я не на все 100%.

Также, по моему опыту, метод DOM (новый вариант) работает медленнее. Когда вам нужно заменить большое количество опций, это происходит значительно медленнее. Если вам просто нужно заменить один или два, вы можете использовать метод DOM.

3
ответ дан 18 December 2019 в 10:47
поделиться

Вы используете replace , который требует в качестве первого аргумента RegEx.

Попробуйте следующее:

document.getElementById('foo').innerHTML = document.getElementById('foo').innerHTML.replace(/<option> one <\/option>/, "<option> two </option>");

Это работает для вас?

0
ответ дан 18 December 2019 в 10:47
поделиться

Отметьте этот

document.getElementById('foo').innerHTML.replace("<option> one </option>", "<option> two </option>") ;

, если он не работает, измените браузер.

0
ответ дан 18 December 2019 в 10:47
поделиться

Я думаю, вы используете IE? Проблема в том, что вам нужно использовать новый Option (...) для заполнения SELECT в IE. Примерно так:

document.getElementsByTagName('select')[0].options[0]=new Option(' two ');

Изменить: об этой ошибке в базе знаний Microsoft есть статья: http://support.microsoft.com/kb/276228

2
ответ дан 18 December 2019 в 10:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: