![](/img/trans.png)
[英]javascript return in IE8 - Object doesn't support this property or method
[英]IE8 and javascript object property, text
在 JavaScript 中使用.text
object 属性可能会在 IE8 中产生意外结果(空白字符串或未定义,即使它包含一个值)。
您可以使用.innerHTML
object 属性作为解决方法。 IE8似乎喜欢这个。
或者,为了获得可靠的跨浏览器兼容性,您可以使用 jquery 来访问对象的文本属性,我可以这样做: $(this).text()
查看答案以获得良好的 jQuery 解决方案。
原始问题: “文本”是 IE8 中保留的 javascript 字吗? 我很好奇,因为我找不到任何说明这一点的资源。
* 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
似乎工作可靠。
不,文本在 JScript 中既不是保留字,也不是将来的保留字。
http://msdn.microsoft.com/en-us/library/0779sbks(v=vs.85).aspx
编辑哦,我现在看到了。
您使用了错误的each
function — $.each()
而不是.each()
。
您还使用.text
而不是.text()
。 修复:
var $mySelect = $('#' + mySelect);
$mySelect.find('option').each(function()
{
var $option = $(this),
text = $option.text();
if (text == strTextToMatch) {
// Found a match
$mySelect.val(text);
$mySelect.trigger('change');
}
});
但你猜怎么着:那是完全没有必要的。 这就足够了:
var $mySelect = $('#' + mySelect),
newVal = $mySelect.find('option:contains(' + strTextToMatch + ')').val();
$mySelect.val(newVal).change();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.