问题描述
<divcontenteditable="true"class="experTxt">dgdsgd<imgsrc="/a.jpg"/><div>aaaaaaaaaakkk</div><div></br></div><div><imgsrc="/b.jpg"/>kkkkkkkkkkkk<ahref="http://www.baidu.com">百度</a></div><div><ahref="http://www.baidu.com">百度2</a></div></div>我想实现的就是图片文字分开,放在数组里['dgdsgd','img1','aaaaaaaaaakkk','img2','kkkkkkkkkkkk<ahref="http://www.baidu.com">百度</a>','<ahref="http://www.baidu.com">百度2</a>']如何实现
解决方案
解决方案二:
文本有格式要求不?
解决方案三:
引用
dgdsgd<imgsrc="/a.jpg"/>
1:你例子的这段代码能不能再严谨的,或者说都用div包裹起来,不要有单独的文字代码。2:用jquery试着一步一步弄,应该不是啥大问题。
解决方案四:
现在就是格式不统一
解决方案五:
能不能这样把div<br>标签去掉把img图片替换成img1,img2其他保留
解决方案六:
var$h=$('<divcontenteditable="true"class="experTxt">dgdsgd<imgsrc="/a.jpg"/><div>aaaaaaaaaakkk</div><div><br/></div><div><imgsrc="/b.jpg"/>kkkkkkkkkkkk<ahref="http://www.baidu.com">百度</a></div><div><ahref="http://www.baidu.com">百度2</a></div></div>');vararr=newArray();varimgNum=1;AddToArray($h);console.info(arr);functionAddToArray(dom){$(dom).each(function(i,n){if($(n).is('img')){arr.push('img'+(imgNum++));}else{varchilds=$(n).find('>*');if(childs.length>0){for(varj=0;j<childs.length;j++){AddToArray(childs[j]);}}else{arr.push($(n).html());}}});}
这个是有问题的,如果只是替换图片的话简单点
解决方案七:
varh='<divcontenteditable="true"class="experTxt">dgdsgd<imgsrc="/a.jpg"/><div>aaaaaaaaaakkk</div><div><br/></div><div><imgsrc="/b.jpg"/>kkkkkkkkkkkk<ahref="http://www.baidu.com">百度</a></div><div><ahref="http://www.baidu.com">百度2</a></div></div>';vari=1;h=h.replace(/<imgs+[^>]*>/g,function(){return'img'+(i++);});console.info(h);
解决方案八:
varh='<divcontenteditable="true"class="experTxt">dgdsgd<imgsrc="/a.jpg"/><div>aaaaaaaaaakkk</div><div><br/></div><div><imgsrc="/b.jpg"/>kkkkkkkkkkkk<ahref="http://www.baidu.com">百度</a></div><div><ahref="http://www.baidu.com">百度2</a></div></div>';vari=1;h=h.replace(/<imgs+[^>]*>/g,function(){return'img'+(i++);}).replace(/<div[^>]*>s*</?brs*/?>s*</div>/g,'');console.info(h);
只带<br>标签的也去掉了
解决方案九:
引用7楼starfd的回复:
varh='<divcontenteditable="true"class="experTxt">dgdsgd<imgsrc="/a.jpg"/><div>aaaaaaaaaakkk</div><div><br/></div><div><imgsrc="/b.jpg"/>kkkkkkkkkkkk<ahref="http://www.baidu.com">百度</a></div><div><ahref="http://www.baidu.com">百度2</a></div></div>';vari=1;h=h.replace(/<imgs+[^>]*>/g,function(){return'img'+(i++);}).replace(/<div[^>]*>s*</?brs*/?>s*</div>/g,'');console.info(h);只带<br>标签的也去掉了
div标签也要去掉
解决方案十:
varh='<divcontenteditable="true"class="experTxt">dgdsgd<imgsrc="/a.jpg"/><div>aaaaaaaaaakkk</div><div><br/></div><div><imgsrc="/b.jpg"/>kkkkkkkkkkkk<ahref="http://www.baidu.com">百度</a></div><div><ahref="http://www.baidu.com">百度2</a></div></div>';vari=1;h=h.replace(/<imgs+[^>]*>/g,function(){return'img'+(i++);}).replace(/</?(div|br)[^>]*>/g,'');console.info(h);
还有什么要替换的吗?
解决方案十一:
现在去去div标签,假如一个div里面有图片和文字能给他分成2个div显示吗
解决方案十二:
你上面要去div,下面又要分两个div,你到底要哪出啊
解决方案十三:
div都不去掉了
解决方案十四:
varh='<divcontenteditable="true"class="experTxt">dgdsgd<imgsrc="/a.jpg"/><div>aaaaaaaaaakkk</div><div><br/></div><div><imgsrc="/b.jpg"/>kkkkkkkkkkkk<ahref="http://www.baidu.com">百度</a></div><div><ahref="http://www.baidu.com">百度2</a></div></div>';vari=1;h=h.replace(/<imgs+[^>]*>/g,function(){return'<div>img'+(i++)+'</div>';}).replace(/</?br[^>]*>/g,'');console.info(h);
给img加个div还可以,给其它的加没法做到
解决方案十五:
引用13楼starfd的回复:
varh='<divcontenteditable="true"class="experTxt">dgdsgd<imgsrc="/a.jpg"/><div>aaaaaaaaaakkk</div><div><br/></div><div><imgsrc="/b.jpg"/>kkkkkkkkkkkk<ahref="http://www.baidu.com">百度</a></div><div><ahref="http://www.baidu.com">百度2</a></div></div>';vari=1;h=h.replace(/<imgs+[^>]*>/g,function(){return'<div>img'+(i++)+'</div>';}).replace(/</?br[^>]*>/g,'');console.info(h);给img加个div还可以,给其它的加没法做到
Img后面的文字内容不能加div标签吗
解决方案:
varh='<divcontenteditable="true"class="experTxt">dgdsgd<imgsrc="/a.jpg"/><div>aaaaaaaaaakkk</div><div><br/></div><div><imgsrc="/b.jpg"/>kkkkkkkkkkkk<ahref="http://www.baidu.com">百度</a></div><div><ahref="http://www.baidu.com">百度2</a></div></div>';vari=1;h=h.replace(/<imgs+[^>]*>([sS]*?</div>)/g,function(){return'<div>img'+(i++)+'</div><div>'+arguments[1]+'</div>';}).replace(/</?br[^>]*>/g,'');console.info(h);
要不你就接受这样子吧,只要有image,都会给后面的内容添加一个div,因为div套div没样式的话本身没多大影响,但image前面的好像没办法,js的正则限制比较多
解决方案:
引用13楼starfd的回复:
varh='<divcontenteditable="true"class="experTxt">dgdsgd<imgsrc="/a.jpg"/><div>aaaaaaaaaakkk</div><div><br/></div><div><imgsrc="/b.jpg"/>kkkkkkkkkkkk<ahref="http://www.baidu.com">百度</a></div><div><ahref="http://www.baidu.com">百度2</a></div></div>';vari=1;h=h.replace(/<imgs+[^>]*>/g,function(){return'<div>img'+(i++)+'</div>';}).replace(/</?br[^>]*>/g,'');console.info(h);给img加个div还可以,给其它的加没法做到
还有一种情况没考虑,如果一个div里面有2个或者多个图片时,只能套一个div,现在这样是套了多个的。