Распечатайте символ возврата \b
несколько раз и затем перезапишите старое число с новым числом.
у меня отлично работает в 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 ';
Лучше указать идентификатор тегу выбора и использовать новую опцию для добавления элемента.
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';
Установка innerHTML для выбора содержит ошибку в IE. Не уверен, исправили ли они это в 7 или 8. Он обрезает часть текста, который вы ему даете, и, следовательно, имеет искаженные параметры. Итак, вам нужно установить внешний HTML, который включает в себя select. Поскольку externalHTML - это только IE (или был), я обычно использую select.parentNode.innerHTML. И присваиваю ID выбранному. Но поскольку вы устанавливаете innerHTML для div, вы уже защищены. Это было просто к сведению.
Я думаю, ваша настоящая проблема в том, что replace ожидает регулярное выражение для первого аргумента. Или что элемент option не такой, как вы ожидаете. IE может использовать имя параметра с заглавной буквы и может добавлять выбранный атрибут. Вы должны предупредить innerHTML, чтобы увидеть, что это такое, прежде чем пытаться выполнить замену строки. Тогда я бы использовал правильное регулярное выражение для замены. Вероятно, вам придется избежать косой черты с помощью обратной косой черты. Я не думаю, что вам нужно избегать угловых скобок, но я не на все 100%.
Также, по моему опыту, метод DOM (новый вариант) работает медленнее. Когда вам нужно заменить большое количество опций, это происходит значительно медленнее. Если вам просто нужно заменить один или два, вы можете использовать метод DOM.
Вы используете replace
, который требует в качестве первого аргумента RegEx.
Попробуйте следующее:
document.getElementById('foo').innerHTML = document.getElementById('foo').innerHTML.replace(/<option> one <\/option>/, "<option> two </option>");
Это работает для вас?
Отметьте этот
document.getElementById('foo').innerHTML.replace("<option> one </option>", "<option> two </option>") ;
, если он не работает, измените браузер.
Я думаю, вы используете IE? Проблема в том, что вам нужно использовать новый Option (...) для заполнения SELECT в IE. Примерно так:
document.getElementsByTagName('select')[0].options[0]=new Option(' two ');
Изменить: об этой ошибке в базе знаний Microsoft есть статья: http://support.microsoft.com/kb/276228