求一个正则表达式,去除网页上name为yyy的img元素 funciton qichu(img_name){ document.images(img_name).removeNode(true);} 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我希望用正则表达式实现,因为我还想用于别的元素,或者XML格式的字符串。在有的时候,在一个HTML格式的字符串中,删除指定类型的标记,更加通用一些 funciton qichu(img_name){ var reg=new RegExp("<img[^\<]+name="+img_name+"[^\<]*>","ig"); document.body.innerHTML=document.body.innerHTML.replace(reg,"");} <BODY><img name="yyy"><img name="yyy"><img name="yyyb"><img name="yyy"><img name="yyy"><img name="yyy"><img name="yyy"></BODY><script>var count = document.all.tags("IMG").length;var tmparray = new Array();for (var i=0; i<count; i++){ if (document.all.tags("IMG")[i].name == "yyy") tmparray[tmparray.length] = document.all.tags("IMG")[i];}for (var i=0; i<tmparray.length; i++){ tmparray[i].outerHTML = "";}tmparray = null;</script> 老梅funciton 写错啦。偶怎么试好像去除多个也不太好用哦<BODY><img id="yyy"><img id="yyy"><img id="yyyb"><img id="yyy"><img id="yyy"><img id="yyy"><img id="yyy"></BODY><script>function qichu(img_name){ document.images(img_name).removeNode(true);}qichu("yyy");</script> 我知道,正则表达式的替换是非常方便的,但是对于HTML XML这类标记性文档,通过DOM的API来访问应该比直接的字符串操作要正统,安全(就是说可以保证ML的well formed)。var count = document.all.tags("IMG").length;并且,看这里,这里已经提供了替换其他标签的能力。 重构一下我的代码。<BODY><img name="yyy"><img name="yyy"><img name="yyyb"><img name="yyy"><img name="yyy"><img name="yyy"><img name="yyy"></BODY><script>document.body.removeElementsWithName = function removeElementsWithName( elementTag, elementName ){ var count = document.all.tags(elementTag).length; var tmparray = new Array(); for (var i=0; i<count; i++) { if (document.all.tags(elementTag)[i].name == elementName) tmparray[tmparray.length] = document.all.tags(elementTag)[i]; } for (var i=0; i<tmparray.length; i++) { tmparray[i].outerHTML = ""; } tmparray = null;}document.body.removeElementsWithName( "IMG", "yyy" );</script> 再改一下,呵呵。<BODY><img name="yyy"><img name="yyy"><img name="yyyb"><img name="yyy"><img name="yyy"><img name="yyy"><img name="yyy"></BODY><script>document.removeElementsByName = function ( elementTag, elementName ){ var count = this.all.tags(elementTag).length; var tmparray = new Array(); for (var i=0; i<count; i++) { if (this.all.tags(elementTag)[i].name == elementName) tmparray[tmparray.length] = this.all.tags(elementTag)[i]; } for (var i=0; i<tmparray.length; i++) { tmparray[i].outerHTML = ""; } tmparray = null;}document.removeElementsByName( "IMG", "yyy" );</script> 把你的函数再改进一下(all的支持没有getElementsByTagName()的多):<BODY><img name="yyy"><img name="yyy"><img name="yyyb"><img name="yyy"><img name="yyy"><img name="yyy"><img name="yyy"><br><input type=button value=ok onclick='removeElementsByName( "IMG", "yyy" )'></BODY><script>function removeElementsByName(elementTag, elementName){ var Es = document.getElementsByTagName(elementTag); var len = Es.length; for(var i=len-1; i>-1; i--) if(Es[i].name==elementName) Es[i].removeNode(true);}</script> http://blog.csdn.net/runmin/archive/2004/07/15/42395.aspx有兴趣的看看这里^^ 我在MS的网站看到过一位 Mark Davis 写的文章, "加快 DHTML 的一组技巧", 他在这篇文章中提到, 对 document 重构赋加对象或者属性的做法, 文档必须执行额外的重算操作, 会影响DHTML的执行效率, 因此我没有采用 expando 属性的解决方法. 你在上文中说到:"所以不用document.all.yyy来取得collection了,因为如果这样的话需要判断name为yyy的数量如果只有一个", 而你的代码又用 this.all.tags(elementTag).length; 这样的写法, 这个 this 在这里当然就是指 document 那么这句代码就是 document.all.tags(elementTag).length; 你怎么还是用了 document.all 呢?? 我觉得你把问题搞复杂化了. jquery引用报NetworkError: 400 Bad Request 问哈 两个正则意义有什么不一样啊 谁给我解释哈? 这个函数正确吗?还有就是怎样用?谢谢了! js 的面向对象 iframe 调用 window.open 问题 javascript难学,美工难做 大家帮看一下这句js哪里语法错了? 如何在Td中让图片和文字对齐? 如何判断输入值范围? SOSSSSS~~~关于event属性的一个问题! 小弟对Javascript不太熟悉,问题很简单,来拿分吧! 改变Select的下拉列表的高度,真的无法实现么?
{
var reg=new RegExp("<img[^\<]+name="+img_name+"[^\<]*>","ig");
document.body.innerHTML=document.body.innerHTML.replace(reg,"");
}
<img name="yyy">
<img name="yyy">
<img name="yyyb">
<img name="yyy">
<img name="yyy">
<img name="yyy">
<img name="yyy">
</BODY>
<script>
var count = document.all.tags("IMG").length;var tmparray = new Array();for (var i=0; i<count; i++)
{
if (document.all.tags("IMG")[i].name == "yyy")
tmparray[tmparray.length] = document.all.tags("IMG")[i];
}for (var i=0; i<tmparray.length; i++)
{
tmparray[i].outerHTML = "";
}tmparray = null;
</script>
<img id="yyy">
<img id="yyy">
<img id="yyyb">
<img id="yyy">
<img id="yyy">
<img id="yyy">
<img id="yyy">
</BODY>
<script>
function qichu(img_name)
{
document.images(img_name).removeNode(true);
}qichu("yyy");
</script>
<img name="yyy">
<img name="yyy">
<img name="yyyb">
<img name="yyy">
<img name="yyy">
<img name="yyy">
<img name="yyy">
</BODY><script>
document.body.removeElementsWithName = function removeElementsWithName( elementTag, elementName )
{
var count = document.all.tags(elementTag).length; var tmparray = new Array(); for (var i=0; i<count; i++)
{
if (document.all.tags(elementTag)[i].name == elementName)
tmparray[tmparray.length] = document.all.tags(elementTag)[i];
} for (var i=0; i<tmparray.length; i++)
{
tmparray[i].outerHTML = "";
} tmparray = null;
}document.body.removeElementsWithName( "IMG", "yyy" );
</script>
<img name="yyy">
<img name="yyy">
<img name="yyyb">
<img name="yyy">
<img name="yyy">
<img name="yyy">
<img name="yyy">
</BODY><script>
document.removeElementsByName = function ( elementTag, elementName )
{
var count = this.all.tags(elementTag).length; var tmparray = new Array(); for (var i=0; i<count; i++)
{
if (this.all.tags(elementTag)[i].name == elementName)
tmparray[tmparray.length] = this.all.tags(elementTag)[i];
} for (var i=0; i<tmparray.length; i++)
{
tmparray[i].outerHTML = "";
} tmparray = null;
}document.removeElementsByName( "IMG", "yyy" );
</script>
<BODY>
<img name="yyy">
<img name="yyy">
<img name="yyyb">
<img name="yyy">
<img name="yyy">
<img name="yyy">
<img name="yyy">
<br><input type=button value=ok onclick='removeElementsByName( "IMG", "yyy" )'>
</BODY><script>
function removeElementsByName(elementTag, elementName)
{
var Es = document.getElementsByTagName(elementTag);
var len = Es.length;
for(var i=len-1; i>-1; i--)
if(Es[i].name==elementName)
Es[i].removeNode(true);
}
</script>
我在MS的网站看到过一位 Mark Davis 写的文章, "加快 DHTML 的一组技巧", 他在这篇文章中提到, 对 document 重构赋加对象或者属性的做法, 文档必须执行额外的重算操作, 会影响DHTML的执行效率, 因此我没有采用 expando 属性的解决方法. 你在上文中说到:"所以不用document.all.yyy来取得collection了,因为如果这样的话需要判断name为yyy的数量如果只有一个", 而你的代码又用 this.all.tags(elementTag).length; 这样的写法, 这个 this 在这里当然就是指 document 那么这句代码就是 document.all.tags(elementTag).length; 你怎么还是用了 document.all 呢?? 我觉得你把问题搞复杂化了.