簡體   English   中英

IE8 和 javascript object 屬性,文本

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM