WEB开发网
开发学院网页设计JavaScript <img usemap不能得到outHTML,如何对标签操作 阅读

<img usemap不能得到outHTML,如何对标签操作

 2012-05-25 11:12:27 来源:WEB开发网   
核心提示:对代码的解释:var imgs=document.getElementsByTagName('div'); //得到所有的divvar imgsFilters=new Array();//存储过滤后需要操作的div,所有需要操作的div的id前缀都是以img开头的for(var i=0;i<img

对代码的解释:
var imgs=document.getElementsByTagName('div'); //得到所有的div

var imgsFilters=new Array();//存储过滤后需要操作的div,所有需要操作的div的id前缀都是以img开头的

for(var i=0;i<imgs.length;i++){
if(/^img/.test(imgs[i].id)){//使用正则匹配开头符合过则的div,返回true则添加到需要操作的集合中,false不做任何操作
imgsFilters.push(imgs[i]);
}
}

下面这个循环很重要:

//循环替换标签内容
for(var i=0;i<imgsFilters.length;i++){//循环需要操作的div数组

//大家在想为什么需要这行,这行代码out.write("\t\t\tbackground:red !important;\r\n");我相信大家很熟悉,是JSP编译之后生成的Java文件,在一行的结尾会有\r\n,在正则匹配 的时候如果有换行,写这个则会比较麻烦,所以先将所有的换行全部替换
var tag=imgsFilters[i].innerHTML.replace(/(\n|\r|(\r\n)|(\u0085)|(\u2028)|(\u2029))/g, "");

//匹配以"<img" 开头一直到该img的反标签结束 ">" 的字符串返回
var patt = new RegExp("<img.*>","g");
var result=patt.exec(tag);//返回匹配到的"<img开头直到该img 的反标签">"的字符串

//对其进行替换,在这里一定会有人说声明什么变量啊,"patt.exec(tag);"直接写两次不就结了,这样写会出问题,因为patt.exec(tag);返回的对象还带有一个属result.lastIndex,因为我上面写的是全局匹配,patt.exec(tag)会根据你调用的次数,而且存在多个可以匹配字符串,那么会依次返回,那么第一次匹配完后,下一次开始匹配的起始点就是上一次匹配lastIndex,如果调用两次,那么在我当前的这种情况下,会返回null,替换也会失败.
tag=tag.replace(result,"<center>"+result+"</center>");

//将替换后的字符串赋值给div
imgsFilters[i].innerHTML=tag;
}

上一页  1 2 

Tags:lt img usemap

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接