2017-01-28 52 views
-1

selectedContentWrap:HTML节点。 htmlVarTag:是一个字符串。如何比较节点数组中是否存在HTML元素?

如何检查HTML元素是否存在于节点中?

htmlVarTag是一个字符串,不明白如何转换它,所以它再次检查是否有这样的标签,以便如果有我可以删除它?

这里是我的节点的输出存储在selectedContentWrap enter image description here

var checkingElement = $scope.checkIfHTMLinside(selectedContentWrap,htmlVarTag); 
$scope.checkIfHTMLinside = function(selectedContentWrap,htmlVarTag){ 

    var node = htmlVarTag.parentNode; 
    while (node != null) { 
     if (node == selectedContentWrap) { 
      return true; 
     } 
     node = node.parentNode; 
    } 
    return false; 


} 
+0

实现,目前还不清楚该标签实际删除标签

Charlieftl,我曾与answear回答下面就是我的对象是 –

+0

仍冲突有关删除VS测试存在一个大杂烩....整体的问题是写得不好,也不是绝对的......见[问] – charlietfl

回答

1

好吧,如果你能粘贴selectedContentWrap内容我将能够测试该代码,但我认为这会工作

// Code goes here 

var checkIfHTMLinside = function(selectedContentWrap,htmlVarTag){ 
    for (item of selectedContentWrap) { 
    if (item.nodeName.toLowerCase() == htmlVarTag.toLowerCase()){ 
     return true; 
    } 
    } 
    return false; 
} 
+0

嗨Ologho西里尔保罗, 我测试了你的代码,但在我看来你有一个拼写错误。你不是指innerHtml.indexOf吗?你错过了“x”?我也得到一个错误无法读取的不确定 –

+0

财产“的indexOf”是你的权利,固定的 –

0

尝试使用:node.innerHTML和检查针对

0

是我或张贴检验测试后计算器和20分钟的一个问题我想它,...

答案是,在selectedContentWrap我已经得到节点列表,我需要做我比较,所以一个简单的如果for循环将适合。

比较我只需要使用.nodeName作为该名工作跨浏览器(纠正我,如果我错了)

一些开发说“的标记名称和匿名倒闭,而不是字典” - 但couldn”找不到任何东西。如果任何人有这个图书馆,你可以请发布到这个问题?

这是我的代码。

var node = selectedContentWrap; 
     console.log('node that is selectedwrapper', selectedContentWrap) 
     for (var i = 0; i < selectedContentWrap.length; i++) { 
      console.log('tag name is ',selectedContentWrap[i].nodeName); 
      var temptagname = selectedContentWrap[i].nodeName; // for debugging 
      if(selectedContentWrap[i].nodeName == 'B'){ 
       console.log('contains element B'); 
      } 

     } 
+0

这工作,如果数组中的某个节点具有实际包含所需标记的子节点,该怎么办? –

+0

我还有其他的功能,看起来对HTML标签插图中的内容,并把他们都在叫selectedContentWrap的数组。所以如果它有孩子,孩子,它会放入数组selectedContentWrap。 –

1

简单的方法是使用angular.element这是jQuery的兼容方法的一个子集

$scope.checkIfHTMLinside = function(selectedContentWrap,htmlVarTag){ 
    // use filter() on array and return filtered array length as boolean 
    return selectedContentWrap.filter(function(str){ 
     // return length of tag collection found as boolean 
     return angular.element('<div>').append(str).find(htmlVarTag).length 
    }).length;  
}); 

仍然没有100%的清楚,如果目标只是为了寻找一个特定的标签或任何标签(即从纯文本区分)

或者那样随便提到如果要删除,如果你只是想解开或删除它的内容也......都容易使用angular.element