Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript IE:无效的目标元素-使用innerHTML+;一串_Javascript_Ajax_Internet Explorer_Infinite Scroll - Fatal编程技术网

Javascript IE:无效的目标元素-使用innerHTML+;一串

Javascript IE:无效的目标元素-使用innerHTML+;一串,javascript,ajax,internet-explorer,infinite-scroll,Javascript,Ajax,Internet Explorer,Infinite Scroll,在Internet Explorer中,此行document.getElementById(“左”).getElementsByTagName(“tbody”)[0]。innerHTML=document.getElementById(“左”).getElementsByTagName(“tbody”)[0]。innerHTML+string正在给我一个SCRIPT600:此操作的目标元素无效…字符10 字符串只是包含一组tablerows的字符串。这在Chrome、Safari或Firefox

在Internet Explorer中,此行
document.getElementById(“左”).getElementsByTagName(“tbody”)[0]。innerHTML=document.getElementById(“左”).getElementsByTagName(“tbody”)[0]。innerHTML+string正在给我一个
SCRIPT600:此操作的目标元素无效…字符10

字符串只是包含一组tablerows的字符串。这在Chrome、Safari或Firefox中运行良好。有更好的方法吗?我所做的是,一旦用户到达页面底部,我就会将tablerows追加到表中以加载更多内容。这是一种AJAX无限滚动类型的交易客户端请求。我使用的是Javascript,现在我更愿意使用Javascript,而不是仅仅为了这个任务而改为jQuery

也可以使用以下内容更新:document.getElementById(“左”).innerHTML=document.getElementById(“左”).innerHTML+string
另外,左边是

是的,您需要先像这样包装它们:

var div = document.createElement("div");
div.innerHTML = "<table><tbody>" + string + "</tbody></table>";

document.getElementById("left")
  .appendChild(div.firstChild.tBodies[0]);
var div=document.createElement(“div”);
div.innerHTML=“+字符串+”;
document.getElementById(“左”)
.appendChild(div.firstChild.tBodies[0]);

当您需要在表格末尾插入表格行时,使用的方式略有不同。您的新代码,例如新的
,应位于名为
html
的变量中

if (document.attachEvent) { //if using old IE
    var currentTable = document.querySelector("#myTable");
    var currentTableHTML = currentTable.outerHTML;

    //replace closing tag with new code + closing tag
    currentTableHTML = currentTableHTML.replace("</tbody>", html + "</tbody>";

    currentTable.parentNode.removeChild(currentTable);

    //reinsert the table before some other element - you can use something else if you have a container for the table
    document.querySelector("#someElement").insertAdjacentHTML("beforebegin", currentTableHTML);
}
else {
    //use insertAdjacentHTML in a normal browser
}
if(document.attachEvent){//if使用旧IE
var currentTable=document.querySelector(“#myTable”);
var currentTableHTML=currentTable.outerHTML;
//用新代码+结束标记替换结束标记
currentTableHTML=currentTableHTML.replace(“,html+”;
currentTable.parentNode.removeChild(currentTable);
//在其他元素之前重新插入表-如果表有容器,则可以使用其他元素
document.querySelector(“#someElement”).insertAdjacentHTML(“beforebeagin”,currentTableHTML);
}
否则{
//在普通浏览器中使用insertAdjacentHTML
}

您不能在IE中设置表、表节或表行元素的innerHTML。您可以使用innerHTML编写整个表,或只编写单元格的内容。请使用DOM方法。PS.Ajax“无限滚动”页面是一个令人讨厌的问题,因为它们有严重的可用性问题。@RobG我想您是这么建议的(你的前两句话似乎有冲突)这就是我刚才尝试的:用innerHTML重写整个表。其次,我相信我使用的是DOM方法。你是说我必须通过DOM而不是字符串创建额外的行吗?最后,客户端请求无限滚动。@RobG嗯,我试图在DOM中编写所有代码,但
newLink.onclick=function(){toggleVote() }
不想听我的话。@KernelJames有一个很好的解决方案。你同意吗?-前两句话并不矛盾。是的,KernelJames的回答很好,因为它使用innerHTML编写了一个完整的表,然后使用标准DOM将新的位传输到现有的表中。检查额外的tbody元素是否不是issue(每个HTML都可以,但其他代码可能不需要多个表体)。客户端要求的并不总是合理的。:-(+1但tbody标记是可选的,因此不必输入。tbody元素是必需的,因此默认情况下将生成。