我在使用innerHTML和我的收音机类型按钮时遇到了麻烦。
<table align="center">
<div class='main'>
<span id="js" class='info'>
<label><input type="radio" name="js" value="0" size="<?php echo $row['size']; ?>" onclick="js(this.value, this.size);" /><img src="arrowup.png"/></label>
<br />
<label><input type="radio" name="js" value="1" size="<?php echo $row['size']; ?>" onclick="js(this.value, this.size);" /><img src="arrowdown.png"/></label>
</span>
</div>
</table>
我的.js看起来像这样:
var xmlhttp;
function getVote(a,b) {
xmlhttp=GetXmlHttpObject();
if (xmlhttp==null) {
alert ("Browser does not support HTTP Request");
return;
}
var url="js.php";
url=url+"?js="+a;
url=url+"&id="+b;
url=url+"&sid="+Math.random();
xmlhttp.onreadystatechange=stateChanged;
xmlhttp.open("GET",url,true);
xmlhttp.send(null);
}
function stateChanged() {
if (xmlhttp.readyState==4) {
document.getElementById("js").innerHTML=xmlhttp.responseText;
}
}
function GetXmlHttpObject() {
var objXMLHttp=null;
if (window.XMLHttpRequest) {
objXMLHttp=new XMLHttpRequest();
}
else if (window.ActiveXObject) {
objXMLHttp=new ActiveXObject("Microsoft.XMLHTTP");
}
return objXMLHttp;
}
这在IE中不起作用!有什么帮助吗?
答案 0 :(得分:2)
首先,非常确定直接在TABLE中的DIV是非法标记。
不要使用非法标记。浏览器会对它做出不同的反应(我最近让Opera忽略了一些非法的东西,IE试图渲染它)。
IE通常应该得到它,首先得到正确的标记,然后看看IE是如何做的。它可能无法像你期望的那样呈现DOM。(FWIW有一个innerHTML呈现问题我遇到了IE,http://support.microsoft.com/kb/276228/但是对于SELECT元素,所以我觉得它不适用于此。)
答案 1 :(得分:1)
问题确实是table标签上的innerHTML。 IE不支持围绕表标记的innerHTML,也不打算在将来的版本中解决这个问题。
解决方法是使用DOM方法或最简单的方法:围绕div包装表。
所以我最终得到了:
<div id="js" align="center"><table>
<span class='main'>
<a onClick="getVote(this.value, this.size);" type="radio" value="0" size="<?php echo $row['id']; ?>" /><img src="arrowup.png"/></a>
<br /><a onClick="getVote(this.value, this.size);" type="radio" value="1" size="<?php echo $row['id']; ?>" /><img src="arrowdown.png"/></a>
</span>
</table></div>
如果将标签设置为图像,还会出现另一个IE错误。只是一个抬头!我知道当我说IE很糟糕时你不会感到惊讶!
答案 2 :(得分:0)
我知道这有点晚了但是这里是如何使用jQuery解决这个问题:
$("#tableName").html(DataToWrite);