0

我在使用带有单选类型按钮的 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 中不起作用!有什么帮助吗?

4

3 回答 3

2

首先,很确定直接在 TABLE 内的 DIV 是非法标记。

不要使用非法标记。浏览器会对它做出不同的反应(我最近让 Opera 忽略了一些非法的东西,IE 试图渲染它)。

IE 通常值得这样做,首先要正确标记,然后看看 IE 是如何做的。可能是它未能按照您的预期呈现 DOM。

(FWIW 有一个 innerHTML 渲染问题,我在 IE 中遇到过,http://support.microsoft.com/kb/276228/,但是对于 SELECT 元素,所以我认为它不适用于这里)。

于 2010-04-04T12:44:22.487 回答
1

问题确实是表格标签上的innerHTML。IE 不支持包含在 table 标记周围的 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 很糟糕时,你不会感到惊讶!

于 2010-02-21T09:07:54.877 回答
0

我知道这有点晚了,但这里是如何用 jQuery 解决这个问题:

$("#tableName").html(DataToWrite);
于 2011-12-12T23:56:59.190 回答