高分急, 提取div中的内容 (js )或者后台实现都行

一切为了你 2015-08-28 03:20:00
<div contenteditable="true" class="experTxt">
dgdsgd<img src="/a.jpg" />
<div>aaaaaaaaaakkk</div>
<div></br></div>
<div><img src="/b.jpg" />kkkkkkkkkkkk <a href="http://www.baidu.com">百度</a></div>
<div><a href="http://www.baidu.com">百度2</a></div>
</div>

我想实现的就是 图片 文字 分开 , 放在数组里
['dgdsgd','img1','aaaaaaaaaakkk','img2','kkkkkkkkkkkk<a href="http://www.baidu.com">百度</a> ','<a href="http://www.baidu.com">百度2</a>']

如何实现
...全文
253 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
一切为了你 2015-08-28
  • 打赏
  • 举报
回复
引用 13 楼 starfd 的回复:
var h = '<div contenteditable="true" class="experTxt">dgdsgd<img src="/a.jpg" /><div>aaaaaaaaaakkk</div><div><br/></div><div><img src="/b.jpg" />kkkkkkkkkkkk <a href="http://www.baidu.com">百度</a></div><div><a href="http://www.baidu.com">百度2</a></div></div>';
var i = 1;
h = h.replace(/<img\s+[^>]*>/g, function () {
    return '<div>img' + (i++) + '</div>';
}).replace(/<\/?br[^>]*>/g, '');
console.info(h);
给img加个div还可以,给其它的加没法做到
还有一种情况没考虑, 如果一个div 里面有2个或者多个图片时, 只能套一个div,现在这样是套了 多个的。
  • 打赏
  • 举报
回复
var h = '<div contenteditable="true" class="experTxt">dgdsgd<img src="/a.jpg" /><div>aaaaaaaaaakkk</div><div><br/></div><div><img src="/b.jpg" />kkkkkkkkkkkk <a href="http://www.baidu.com">百度</a></div><div><a href="http://www.baidu.com">百度2</a></div></div>';
var i = 1;
h = h.replace(/<img\s+[^>]*>([\s\S]*?<\/div>)/g, function () {
    return '<div>img' + (i++) + '</div><div>' + arguments[1]+'</div>';
}).replace(/<\/?br[^>]*>/g, '');
console.info(h);
要不你就接受这样子吧,只要有image,都会给后面的内容添加一个div,因为div套div没样式的话本身没多大影响,但image前面的好像没办法,js的正则限制比较多
一切为了你 2015-08-28
  • 打赏
  • 举报
回复
引用 13 楼 starfd 的回复:
var h = '<div contenteditable="true" class="experTxt">dgdsgd<img src="/a.jpg" /><div>aaaaaaaaaakkk</div><div><br/></div><div><img src="/b.jpg" />kkkkkkkkkkkk <a href="http://www.baidu.com">百度</a></div><div><a href="http://www.baidu.com">百度2</a></div></div>';
var i = 1;
h = h.replace(/<img\s+[^>]*>/g, function () {
    return '<div>img' + (i++) + '</div>';
}).replace(/<\/?br[^>]*>/g, '');
console.info(h);
给img加个div还可以,给其它的加没法做到
Img后面的文字内容 不能加div标签吗
  • 打赏
  • 举报
回复
var h = '<div contenteditable="true" class="experTxt">dgdsgd<img src="/a.jpg" /><div>aaaaaaaaaakkk</div><div><br/></div><div><img src="/b.jpg" />kkkkkkkkkkkk <a href="http://www.baidu.com">百度</a></div><div><a href="http://www.baidu.com">百度2</a></div></div>';
var i = 1;
h = h.replace(/<img\s+[^>]*>/g, function () {
    return '<div>img' + (i++) + '</div>';
}).replace(/<\/?br[^>]*>/g, '');
console.info(h);
给img加个div还可以,给其它的加没法做到
一切为了你 2015-08-28
  • 打赏
  • 举报
回复
div 都不去掉了
  • 打赏
  • 举报
回复
你上面要去div,下面又要分两个div,你到底要哪出啊
一切为了你 2015-08-28
  • 打赏
  • 举报
回复
现在去去div标签,假如一个div里面 有图片 和文字 能给他分成2个div 显示吗
  • 打赏
  • 举报
回复
var h = '<div contenteditable="true" class="experTxt">dgdsgd<img src="/a.jpg" /><div>aaaaaaaaaakkk</div><div><br/></div><div><img src="/b.jpg" />kkkkkkkkkkkk <a href="http://www.baidu.com">百度</a></div><div><a href="http://www.baidu.com">百度2</a></div></div>';
var i = 1;
h = h.replace(/<img\s+[^>]*>/g, function () {
    return 'img' + (i++);
}).replace(/<\/?(div|br)[^>]*>/g, '');
console.info(h);
还有什么要替换的吗?
一切为了你 2015-08-28
  • 打赏
  • 举报
回复
引用 7 楼 starfd 的回复:
var h = '<div contenteditable="true" class="experTxt">dgdsgd<img src="/a.jpg" /><div>aaaaaaaaaakkk</div><div><br/></div><div><img src="/b.jpg" />kkkkkkkkkkkk <a href="http://www.baidu.com">百度</a></div><div><a href="http://www.baidu.com">百度2</a></div></div>';
var i = 1;
h = h.replace(/<img\s+[^>]*>/g, function () {
    return 'img' + (i++);
}).replace(/<div[^>]*>\s*<\/?br\s*\/?>\s*<\/div>/g, '');
console.info(h);
只带<br>标签的也去掉了
div标签也要去掉
  • 打赏
  • 举报
回复
var h = '<div contenteditable="true" class="experTxt">dgdsgd<img src="/a.jpg" /><div>aaaaaaaaaakkk</div><div><br/></div><div><img src="/b.jpg" />kkkkkkkkkkkk <a href="http://www.baidu.com">百度</a></div><div><a href="http://www.baidu.com">百度2</a></div></div>';
var i = 1;
h = h.replace(/<img\s+[^>]*>/g, function () {
    return 'img' + (i++);
}).replace(/<div[^>]*>\s*<\/?br\s*\/?>\s*<\/div>/g, '');
console.info(h);
只带<br>标签的也去掉了
  • 打赏
  • 举报
回复
var h = '<div contenteditable="true" class="experTxt">dgdsgd<img src="/a.jpg" /><div>aaaaaaaaaakkk</div><div><br/></div><div><img src="/b.jpg" />kkkkkkkkkkkk <a href="http://www.baidu.com">百度</a></div><div><a href="http://www.baidu.com">百度2</a></div></div>';
var i = 1;
h = h.replace(/<img\s+[^>]*>/g, function () {
    return 'img' + (i++);
});
console.info(h);
  • 打赏
  • 举报
回复
var $h = $('<div contenteditable="true" class="experTxt">dgdsgd<img src="/a.jpg" /><div>aaaaaaaaaakkk</div><div><br/></div><div><img src="/b.jpg" />kkkkkkkkkkkk <a href="http://www.baidu.com">百度</a></div><div><a href="http://www.baidu.com">百度2</a></div></div>');
        var arr = new Array();
        var imgNum = 1;
        AddToArray($h);
        console.info(arr);

        function AddToArray(dom) {
            $(dom).each(function (i, n) {
                if ($(n).is('img')) {
                    arr.push('img' + (imgNum++));
                } else {
                    var childs = $(n).find('>*');
                    if (childs.length > 0) {
                        for (var j = 0; j < childs.length; j++) {
                            AddToArray(childs[j]);
                        }
                    }
                    else {
                        arr.push($(n).html());
                    }
                }
            });
        }
这个是有问题的,如果只是替换图片的话简单点
一切为了你 2015-08-28
  • 打赏
  • 举报
回复
能不能这样把div <br>标签去掉 把img图片 替换成 img1,img2 其他保留
一切为了你 2015-08-28
  • 打赏
  • 举报
回复
现在就是格式不统一
sy401042879 2015-08-28
  • 打赏
  • 举报
回复
引用
dgdsgd<img src="/a.jpg" />
1:你例子的这段代码能不能再严谨的,或者说都用div包裹起来,不要有单独的文字代码。 2:用jquery试着一步一步弄,应该不是啥大问题。
  • 打赏
  • 举报
回复
文本有格式要求不?

62,041

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧