2011-06-07 49 views
0

在JavaScript中使用.text对象属性可能会在IE8中产生意外的结果(空白字符串或未定义,即使它包含值)。IE8和javascript对象属性,文本

您可以使用.innerHTML对象属性作为解决方法。 IE8似乎喜欢这个。

或者,为了实现可靠的跨浏览器兼容性,您可以使用jquery来访问对象的文本属性,我可以这样做:$(this).text()查看好的jQuery解决方案的答案。

原问题:是'text'是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似乎可靠工作。

+0

我几乎没有人捍卫Internet Explorer(s)的行为,但脚本解释器确实工作正常。 – Pointy 2011-06-07 14:58:38

+1

由于您使用的是jQuery,有没有原因您不使用['.text()'](http://api.jquery.com/text)或['.html()'](http: //api.jquery.com/html)?只是好奇! :) – Rob 2011-06-07 15:24:31

+0

我也想这么想,但是这样的问题会不会导致译员呢? http://www.tgerm.com/2009/01/javascript-ie-anchortext-property.html – BumbleB2na 2011-06-07 15:26:31

回答

2

不,在JScript中,文本既不是保留字也不是未来保留字。

http://msdn.microsoft.com/en-us/library/0779sbks(v=vs.85).aspx


编辑 OH,现在我明白了。

您使用的是错误的each函数— $.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(); 
+0

假设JavaScript的浏览器解释存在差异,这个jscript保留字列表必须是适用于IE8 +的官方微软版本?我想知道'文字'的问题是什么?也许我的问题只是一种侥幸。 – BumbleB2na 2011-06-07 14:45:05

+0

我加了这个答案的排名b/c它在技术上确实回答了我原来的问题,但我已经改写了它 – BumbleB2na 2011-06-07 15:24:03

+0

这很好,看我的编辑。 – 2011-06-07 15:30:46