用正则表达式,从html中匹配指定id的html元素,并设置其属性值。如下:<img id="img1" src="" /> //查找id为img1的img,并且设置它的src属性值
<div id="div1" class=""></div> //查找id为div1的div,并且设置它的class属性值
谢谢回复!
<div id="div1" class=""></div> //查找id为div1的div,并且设置它的class属性值
谢谢回复!
解决方案 »
- js如何解析xml字符串?
- 生成WScript.Shell时,出现“Microsoft JScript 运行时错误: Automation 服务器不能创建对象”
- 帮忙看看这段代码 js,我想获取url传递过来的参数,再传给下一个动态网页
- jquery如何获取id的名称
- Javascript调用OCX控件时出现“对象不支持此方法或属性 ”错误!
- 请教这个文本框循环文字的代码!
- JavaScript里面引用HTML元素的问题
- 怎样得到Bindows源代码
- 已知文件路径,要从路径中解析文件名,求正则表达式
- 求js 验证代码~
- ajax中怎么判断div标签下是否存在img
- JS控制window.open弹出的窗口关闭
<script type="text/javascript">
function AppendAttr(a,b){
var o=document.getElementById(a);
for(name in b){
o.setAttribute(name,b[name]);
}
}
AppendAttr('test',{"class":'aaa',"src":'bbb'});
alert(document.getElementById('a').innerHTML)
</script>
<div id="a">
<div id="test"></div>
</div>
不过,我的应用环境无法使用js,jquery来获取dom对象!
不然,我不会到这里提问了^_^!!
整合过程中遇到了问题,js、jquery无法获取dom,所以只能用这种方法来处理
你基于web的,为什么不能用js?搞不清楚你具体的需求如果你是需要在后台中完成这些操作,试试转化成xml,用节点看看能不能操作。再要不然后台写正则匹配指定的字符串,然后修改吧。就不叫操作html了,纯字符串操作了
刚写了好久,发现还是js写的,蛋疼了~~
var width_1 = "width=\"10px\"";//要添加的属性
var test_value = document.getElementById('a').value; //我测试用的标签
var reg = /\<[^\<]*(id\s*\=\s*(\"div\")|(\'div\')|(div]))[^\<]*[\/]?\>/gi;
test_value = test_value.replace(reg,function($1,$2){
alert($1);
alert($2);
return $1.replace($2,$2 + " " +width_1);
});
alert("aaa="+test_value);唉~~
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title>
<script type="text/javascript">
function test(x){
var a=document.body.innerHTML;
var reg=new RegExp("<.*?id=\""+x+"\".*?>");
a=a.match(reg);
a[0]=a[0].replace("src=\"\"","src=\"1.jpg\"");
document.body.innerHTML=a;
alert(a);
}
window.onload=function(){test("img1");};
</script>
</head><body>
<img id="img1" src="" />
<div id="div1" class=""></div>
</body>
</html>
比较麻烦 你替换下 上边会把document.body的内容完全覆盖掉 而且也不可靠的样子 不能操作dom吗?
html是xml格式的,后台把它当xml文件处理试试,或者把里面字符串取出来,做成一个xml对象,应该可以用xml节点的操作方式,比用正则去找字符串总要方便些吧?
如下:
第1步:用正则表达式匹配id为img1的img标签
(或者是去匹配id为div1的div标签)
第2步:设置那些标签(img,div)的属性值,如它们的src属性,以及class属性//查找id为img1的img,并且设置它的src属性值
<img id="img1" src="" />
//查找id为div1的div,并且设置它的class属性值
<div id="div1" class=""></div>
当然说出来,也许有另一个好处,就是有些高手用过它(flowplayer),对它深有研究,能够通过它本身的机制
来解决问题,那么这就变得简单了!
参考下<script type="text/javascript">
String.prototype.addDomAttr = function(id, attr, value){
var s = this,
reDOM = new RegExp('<[^>]+\\sid="'+id+'"[^>]*?>', 'i'),
reAttr = new RegExp(attr+'=""' ,'i');
if( reDOM.test(s) ){
var m = s.match(reDOM).toString();
if( reAttr.test(m) ){
var n = s.match(reAttr).toString();
s = s.replace(m, m.replace(n, n.replace('"', '"'+value)));
}else{
var l = m.lastIndexOf('"');
var a = m.split('');
a.splice(l+1, 0, ' '+attr+'="'+value+'"')
s = s.replace(m, a.join(''));
}
}
return s
};
var str = '<img id="a" src="" />123<img id="img1" src="" />123<span id="test">test</span><span>打酱油</span><div id="div1" class=""></div>123';
alert(str.addDomAttr('img1', 'src', 'baidu.jpg'));
alert(str.addDomAttr('test', 'title', 'i am test'));
alert(str.addDomAttr('div1', 'class', 'className'));
</script>
当要替换的属性值不为空时,替换会失败,会变成追加。如:<img id="img1" src="test.jpg" />str.addDomAttr('img1', 'src', 'baidu.jpg'));此时返回的结果为::<img id="img1" src="test.jpg" src="baidu.jpg" />
String.prototype.addDomAttr = function(id, attr, value){
var s = this,
reDOM = new RegExp('<[^>]+\\sid="'+id+'"[^>]*?>', 'i'),
reAttr = new RegExp(attr+'="[^"]*"' ,'i');
if( reDOM.test(s) ){
var m = s.match(reDOM).toString();
if( reAttr.test(m) ){
var n = m.match(reAttr).toString();
var a = n.split(''),
l = n.lastIndexOf('"') - n.indexOf('"') - 1;
a.splice(n.indexOf('"')+1, l, '');
s = s.replace(m, m.replace(n, a.join('').replace('"', '"'+value)));
}else{
var l = m.lastIndexOf('"');
var a = m.split('');
a.splice(l+1, 0, ' '+attr+'="'+value+'"');
s = s.replace(m, a.join(''));
}
}
return s
};
var dom=$("<div>");
dom.append(str);
dom.find("img[id='a']").attr("src","ddd");
alert(dom.html())
对含有html内容的字符串进行操作,为内容中的dom元素设置属性值。
解决方案:
1:(21楼的代码)使用正则表达式来匹配和替换2:(27楼的代码)使用jquery将字符串转成dom来进行操作
这个代码比较简洁,利用了jquery本身对dom元素强大的处理能力,就是在使用之前使用了一个转换!
当前应用背景下,这两种方案都可以,方案2更为简洁!
感谢crying_boy兄弟以及大家的热心帮助!