selectedContentWrap:HTML节点。 htmlVarTag:是一个字符串。
如何检查节点中是否存在HTML元素?
htmlVarTag是一个字符串,并且不了解如何转换它以便再次检查是否有这样的标记,以便如果有,我可以将其删除?
这里是我的节点的输出,存储在selectedContentWrap中
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 :(得分:1)
好吧,如果你可以粘贴selectedContentWrap
的内容,我就可以测试这段代码,但我认为这样可行
// Code goes here
var checkIfHTMLinside = function(selectedContentWrap,htmlVarTag){
for (item of selectedContentWrap) {
if (item.nodeName.toLowerCase() == htmlVarTag.toLowerCase()){
return true;
}
}
return false;
}
答案 1 :(得分: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
答案 2 :(得分:0)
尝试使用:node.innerHTML
并检查
答案 3 :(得分:0)
是我还是在stackoverflow上发布一个问题,在测试测试后20分钟我想出来了......,...
答案是在selectedContentWrap中我已经获得了节点列表,我需要做的就是比较,所以一个简单的if for循环就适合了。
要比较我只需要使用.nodeName的名称,因为它可以跨浏览器工作(如果我错了,请纠正我)
有些开发人员说“标签名称字典和匿名封闭” - 但找不到任何东西。如果有人有这个图书馆,你可以把它发布到问题吗?
这是我的代码。
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');
}
}