0

我找不到解决 IE7 中的 innerHTML 错误的方法。如果文本为“-1”,我需要查看动态生成的 HTML 的内容并更改它。我正在使用原型 js 库,但找不到修复程序。有任何想法吗?

JS:

<script language="javascript" type="text/javascript">
    Event.observe(window, 'load', function () {
    var num = 1;
    var allAccountInfoItems = $A('accountInfoItem');
    var numofElements = (allAccountInfoItems.length);

    for (var x = 0; x < numofElements; x++ )
    {
        var oldHTML = $('accountInfo').innerHTML;
        var newHTML = "Unlimited";

        if (oldHTML == "-1")
        {
            $('accountInfo').update(newHTML);  
        }

        var oldId = $('accountInfo').id;
        var numPlus = num++;

        $('accountInfo').id = oldId + numPlus;
    }

});
</script>
4

3 回答 3

0

您是否尝试修剪空白?您可能在文本内容周围有空白文本节点。

$('accountInfo').innerHTML.strip()

如果这不起作用,请尝试alert(oldHTML)查看您真正获得的价值是什么。


旁注:你意识到$A('accountInfoItem')结果是["a", "c", "c", "o", "u", "n", "t", "I", "n", "f", "o", "I", "t", "e", "m"]?这是故意的吗?

于 2009-11-11T21:27:09.767 回答
0

获取 innerHTML 的正确(DOM 友好)方法是 element.childNodes[0].textContent

因此,在您的代码中,它将是:

var oldHTML = $('accountInfo').childNodes[0].textContent;

您可能希望像 Roatin 提到的那样剥离字符串,以确保您只有文本。

var oldHTML = $('accountInfo').childNodes[0].textContent.strip();
于 2009-11-11T22:28:26.207 回答
0

$A 将任何内容转换为数组。我认为您想在其中使用带有 CSS 选择器的 $$() 。在你的情况下,这将是

$$('.accountInfoItem');

点是因为它可能是一个以 accountInfoItem 作为类名的元素列表。

于 2009-11-11T22:12:35.710 回答