IE中的innerHTML?

时间:2010-02-21 06:16:27

标签: php javascript internet-explorer innerhtml

我在使用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中不起作用!有什么帮助吗?

3 个答案:

答案 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);