Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/417.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 IE11 DOM规范化不';不能使用表行_Javascript_Jquery_Internet Explorer_Dom_Normalize - Fatal编程技术网

Javascript IE11 DOM规范化不';不能使用表行

Javascript IE11 DOM规范化不';不能使用表行,javascript,jquery,internet-explorer,dom,normalize,Javascript,Jquery,Internet Explorer,Dom,Normalize,我想规范化表行。这就像一个魅力,除了在IE中(用IE 11测试) 我创建了一个演示片段来演示这个问题: $(函数(){ $(“表tbody tr span”)。每个(函数(){ var$this=$(this); var$parent=$this.parent(); $this.replaceWith($this.html()); $parent[0]。规范化(); }); }); 主席: 出生地 扎卡里·泰勒 弗吉尼亚州巴伯斯维尔 如果“开发人员”工具栏处于打开状态,IE-11似乎无法规范

我想规范化表行。这就像一个魅力,除了在IE中(用IE 11测试)

我创建了一个演示片段来演示这个问题:

$(函数(){
$(“表tbody tr span”)。每个(函数(){
var$this=$(this);
var$parent=$this.parent();
$this.replaceWith($this.html());
$parent[0]。规范化();
});
});

主席:
出生地
扎卡里·泰勒
弗吉尼亚州巴伯斯维尔

如果“开发人员”工具栏处于打开状态,IE-11似乎无法规范化已经是文档一部分的元素

这也与IE9和IE10相关(通过使用
meta-http equiv=“X-UA-Compatible”
tag进行模拟)

当您只创建新节点而不将它们附加到文档时,一切都很好(在这两种情况下,“开发人员”工具栏处于打开和关闭状态):

d=document.createElement('div');
d、 appendChild(document.createTextNode('text 1'));
d、 appendChild(document.createTextNode('text 2'));
console.log(d.childNodes.length+'-应为2')
d、 规范化();

console.log(d.childNodes.length+'-应该是1')
我对DOM.normalize()不太熟悉,但是如果您已经在使用jQuery,那么操纵元素的内容就相当容易了。我最喜欢的删除不必要的嵌套标记的方法是使用$.text(),如下所示:


如果您的用例确实像您发布的一样简单,那么这种方法就有效了。对于更复杂的用例,还有许多其他方法可以完成这类工作。

似乎IE-11无法规范已经是文档一部分的元素。
。这不是真的,
normalize()
在IE 11中起作用,例如一个段落:你的第一个例子对我也起作用。@dude,你是对的。我做了更彻底的检查,我想我找到了原因(以及解决方案,如果你需要的话)。欢迎您检查并让我知道(如果它是正确的-请等待奖金的授予,直到它结束,看看是否有其他人有更多关于这个奇怪的情况说)。我不能确认这只是出现在开发者工具栏打开。对我来说,即使开发者工具栏没有打开,这个问题仍然存在。您使用的浏览器/操作系统是什么?正如您在我上面的示例中所看到的,它与例如
元素一起工作。这在表上下文中不起作用一定有原因。@dude“在IE 11中起作用,例如,带有一个段落:jsfiddle…”您的示例在IE11中不起作用。@dude,我在Win 8中使用IE11。从我做的所有检查来看,这似乎是IE中的一个bug。在我的一些检查中,浏览器没有给出准确的预期结果,因此在打开/关闭开发者工具栏之间,我切换网站(打开开发工具->打开测试页->关闭开发工具->打开google.com->打开测试页)。你能试试看,如果它改变了什么,告诉我吗?你检查了更新的答案了吗?我想知道它是否回答了你的问题。
$("table tbody tr span").each(function() {
  var $parent = $(this).parent();
  $parent.html($parent.text());
});