将文本与innerHTML IE7问题进行比较

时间:2009-11-11 21:16:14

标签: javascript prototypejs innerhtml

我无法找到解决IE7中innerHTML错误的方法。我需要查看动态生成的HTML的内容,如果文本为“-1”则更改它。我正在使用原型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>

3 个答案:

答案 0 :(得分:0)

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

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

如果这不起作用,只需尝试alert(oldHTML),看看你真正得到的是什么。


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

答案 1 :(得分:0)

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

$$('.accountInfoItem');

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

答案 2 :(得分:0)

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

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

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

你可能想要像Roatin所提到的那样删除字符串,以确保你只有文字。

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