我在我想要操作的javascript字符串中有html代码(我从ajax调用中得到)。 如果div已经存在于字符串中,我想删除它或想要更改其内容。
例如,我将此代码放在一个字符串中:
<div id ="message_abc_support" class = "messageclass">
<div class="messageBlockImage2">
</div>
<div id="messageBlockText">
<div id="messagesname">abc</div>
<div id="messagesmsg">123</div></div></div>
<div id ="message_abcd_support" class = "messageclass">
<div class="messageBlockImage2">
</div>
<div id="messageBlockText">
<div id="messagesname">abcd</div>
<div id="messagesmsg">123</div></div></div>
现在假设我来自ajax电话:
<div id ="message_abcd_support" class = "messageclass">
<div class="messageBlockImage2">
</div>
<div id="messageBlockText">
<div id="messagesname">abcdef</div>
<div id="messagesmsg">123456</div></div></div>
如何用相同的id替换另一个div?请注意我有一个字符串,所以我不能删除div
答案 0 :(得分:1)
我觉得我的老师告诉我们&#34;好吧,我已经教他们代数30年了,我认为这是关于他们开始接受它的时间&#34;
要明白:正则表达式的强度不足以解析任意HTML。有很多边缘情况和规则会导致错误。
然而,有其他方法可以轻松解决您的问题:
正确的方法是不要有重复的ID开头。说真的,几乎没有充分的理由要有重复的ID。根据定义,它们是独特的。首先,不要在div中添加ID。如果您需要查询它们,请考虑一下您正在做什么:您要查询您的视觉演示文稿以获取商业信息。相反,使用数组和对象来表示您的实际数据并将它们绑定到表示(例如,使用闭包或显式映射)。
但是......你已经有了这个代码..了解正确的UI结构可能需要花费很多时间..也许你甚至不是在后端创建这个代码的人。
因此,您可以使用每个浏览器具有的内置DOM解析功能:
var el = document.createElement("div"); // placeholder
el.innerHTML = response; // feed your AJAX response there
var elms = el.querySelectorAll("[id]"); // select every element with an ID attribute
for(var i = 0; i < elms.length; i++){
// check if element with the same ID exists in the document
if(document.querySelector(elms[i].id)){
// wipe the ID out, in your code you can do whatever with it
elms[i].id = "";
}
}
答案 1 :(得分:0)
将页面元素包含在<div id="target"></div>
中。每次从ajax调用中得到肯定响应时,只需在你的ajax调用的成功块中替换id为target
的div的现有内容,如下所示
success:function(data) {
$('#div').html(data); // as simple as that
}
快乐编码:)
答案 2 :(得分:0)
您可以将jquery选择器应用于字符串并替换现有内容:
var s = '<div id="message_abcd_support" class = "messageclass"><div class="messageBlockImage2"></div><div id="messageBlockText"><div id="messagesname">abcdef</div><div id="messagesmsg">123456</div></div></div>';
f = $(s).filter("#message_abcd_support");
$("#message_abcd_support").replaceWith(f);