Javascript – 正则表达式:如何用相同的id加号替换字符串中的id?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Javascript – 正则表达式:如何用相同的id加号替换字符串中的id?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1783字,纯文字阅读大概需要3分钟。
内容图文
![Javascript – 正则表达式:如何用相同的id加号替换字符串中的id?](/upload/InfoBanner/zyjiaocheng/723/c5cb3344a2764ba79cba5b02fc1c20b5.jpg)
我有一个包含多个元素的字符串,其ID如下所示:
var data = "<div id='1'></div><input type='text' id='2'/>";
现在我正在使用这个正则表达式来查找字符串中的所有id:
var reg = /id="([^"]+)"/g;
之后我想用新的id替换所有那些id.像这样的东西:
data = data.replace(reg, + 'id="' + reg2 + '_' + numCompare + '"');
我想要reg2,如上所示,返回id的值.
我不太熟悉正则表达式,所以我该怎么做呢?
解决方法:
而不是使用正则表达式,解析它并循环遍历元素.尝试:
var data = "<div id='1'></div><div id='asdf'><input type='text' id='2'/></div>",
numCompare = 23,
div = document.createElement("div"),
i, cur;
div.innerHTML = data;
function updateId(parent) {
var children = parent.children;
for (i = 0; i < children.length; i++) {
cur = children[i];
if (cur.nodeType === 1 && cur.id) {
cur.id = cur.id + "_" + numCompare;
}
updateId(cur);
}
}
updateId(div);
演示:http://jsfiddle.net/RbuaG/3/
这将检查id是否在第一个位置设置,然后才会修改它.
此外,如果HTML包含注释节点(IE 6-8确实包含.children中的注释节点),则它是安全的.
此外,它遍历所有元素的所有孩子.在您的示例中,您只有一个级别的元素(没有嵌套).但在我的小提琴中,我嵌套了< input />它仍然被修改.
要获取更新的HTML,请使用div.innerHTML.
使用jQuery,您可以尝试:
var data = "<div id='1'></div><div id='asdf'><input type='text' id='2'/></div>",
numCompare = 23,
div = $("<div>"),
i, cur;
div.append(data);
div.find("[id]").each(function () {
$(this).attr("id", function (index, attr) {
return attr + "_" + numCompare;
});
});
DEMO:http://jsfiddle.net/tXFwh/5/
虽然id??以和/或数字开头是有效的,但您应该将元素的id更改为普通标识符.
参考文献:
> .children:https://developer.mozilla.org/en-US/docs/DOM/Element.children
> .nodeType:https://developer.mozilla.org/en-US/docs/DOM/Node.nodeType
> jQuery.find():http://api.jquery.com/find/
> jQuery.attr():http://api.jquery.com/attr/
> jQuery.each():http://api.jquery.com/each/
内容总结
以上是互联网集市为您收集整理的Javascript – 正则表达式:如何用相同的id加号替换字符串中的id?全部内容,希望文章能够帮你解决Javascript – 正则表达式:如何用相同的id加号替换字符串中的id?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。