Использование .text
свойства объекта в JavaScript может привести к неожиданным результатам в IE8 (пустая строка или неопределенное значение, даже если оно содержит значение).
Вы можете использовать .innerHTML
свойство объекта в качестве обходного пути. IE8, кажется, нравится это.
Или, для надежной кросс-браузерной совместимости вы можете вместо этого использовать jquery для доступа к свойству text объекта, и я мог бы сделать это с помощью: $(this).text()
См. Ответ для хорошего решения jQuery.
Оригинальный вопрос: Является ли «текст» зарезервированным словом javascript в IE8? Мне любопытно, потому что я не смог найти ни одного ресурса, который бы заявлял об этом.
* JavaScript (optionObj.innerHTML
) Решение: *
// Look for a match in the section dropdown and select it.
$.each($('#' + mySelect + ' option'), function(key, optionObj) {
// Switched 'optionObj.text' to 'optionObj.innerHTML' for cross-browser compatibility
if (optionObj.innerHTML == strTextToMatch) {
// Found a match
$('#' + mySelect).val(optionObj.text);
$('#' + mySelect).trigger('change');
}
});
В IE8 optionObj.text
иногда возвращал бы пустую строку, даже когда я видел в своем отладчике, что она содержала значение (я мог видеть, раскрыв объект optionObj
)! Странно то, что в 10% случаев optionObj.text
будет возвращать фактическое значение, отличное от пустой строки. Это, как говорится, optionObj.innerHTML
, кажется, работает надежно.