我无法找到解决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>
答案 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();