我正在尝试:
document.getElementById("header-text").innerHTML = "something interesting";
除Opera之外的每个浏览器都能正常工作(我正在运行最新版本)。
浏览互联网我发现有人说Opera不支持innerHTML。这听起来不对。
任何指针?
由于
修改:这是我想要的ID
<div id="header-text" class="picture-text">
<!--[if gt IE 5]>ugly hack<![endif]-->
Some text generated server side
<!--[if gt IE 5]>ugly hack<![endif]-->
</div>
Edit2 :我遇到了同样的问题:
<div id="header-text" class="picture-text">
Static text
</div>
EDIT3 :
<body onload="intialize();">
function intialize() {
operaHeaderFix();
}
function operaHeaderFix(){
if(window.opera) {
/*opera specific action*/
document.getElementById("picture-line-wrapper").style.position="relative";
document.getElementById("picture-line-wrapper").style.top="0px";
document.getElementById("picture-line-wrapper").style.marginTop="-230px";
document.getElementById("picture-line").style.padding="1px";
document.getElementById("header-text").innerHTML = "<div style='margin:220px 0px 0px 20px;'>"+document.getElementById("header-text").innerHTML+"TEST</div>";
}
}
Edit4 :如果删除if(window.opera),它将在FF和IE中正常运行
答案 0 :(得分:2)
发现问题:
包装节点未正确关闭。
<div att1="value" att2="value"
<div id="header-text">...</div>
</div>
AFAIK,FF和IE礼貌地修复了标签......但是Opera没有,因此孩子DIV实际上并不是DOM中的元素。
应该可以正常工作。 id为“header-text”的元素是什么?你确定只有一个匹配,它有可编辑的内容吗?
你可以发布一些标记,以便我们测试吗?
从PPK的网站上看,似乎没有任何Opera问题: http://www.quirksmode.org/dom/innerhtml.html
更新: 在XP上的Opera 9.6.4中运行此代码对我来说很好。
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>innerHTML test</title>
<script>
function doIt(){
document.getElementById("header-text").innerHTML = "something interesting";
}
</script>
</head>
<body>
<div id="header-text" class="picture-text">
Static text
</div>
<input type="button" value="Change It" onclick="doIt();"/><br/>
</body>
</html>
答案 1 :(得分:2)
我遇到了一个有点相关的问题,发现它与HTML编码值有关。例如,当innerHTML包含“&amp; nbsp;”时而不是空格,innerHTML会稍微不同(我通过测试innerHTML的长度来确认)。
以下是我在尝试获取包含单个DIV的标签的innerHTML时包含编码的非中断空格(&lt; div&gt;&amp; nbsp;&lt; / div&gt;)的内容:
<div> </div>
上面的例子显示了Opera 10.26如何返回innerHTML,当我检查长度时它将在Opera中返回12
<div> </div>
这就是我使用的所有其他浏览器返回innerHTML(IE6 / 7/8,Firefox 3.x,Chrome等)的方式,当我检查长度时,它将在所有其他浏览器中返回17。
答案 2 :(得分:0)
编辑:你怎么称呼这个功能?您是在文档<head>
中调用它,在<body>
的末尾,您使用的是window.onload
吗?
innerHTML
不是w3c-valid属性(它将在HTML 5中)。它由Microsoft创建,出于兼容性原因,仅受大多数其他浏览器的支持。
那就是说,我相信Opera确实支持innerHTML
,但有些谷歌搜索表明它is broken in certain versions。尝试更新您的Opera版本,然后查看它是否有效。