0

事先我为任何双胞胎道歉,我已经搜索了一点,但没有找到适合我需要的脚本。(顺便说一句:Javascript 不是我的强项)

我需要的是一个脚本,它将 div 类“post”中的每个图像与 div 类“parent”一起包装起来。

我所拥有的是以下内容:

<div class="post">
<img src="aSimpleImage.png">
</div>

我想要的结果是:

<div class="post">
<div class="parent"><img src="aSimpleImage.png"></div>
</div>

我希望脚本是纯粹的、普通的 Javascript,没有 jQuery 或脚本语言的额外外部 http 请求。我试过:

var parent = element.parentNode; 
var wrapper = document.createElement('.parent'); // set the wrapper as child (instead of the element) 
parent.replaceChild(img, .parent); // set element as child of wrapper  
wrapper.appendChild(element);

编辑:找到这个片段

// create the container div
var dv = document.createElement('div');
// get all divs
var divs = document.getElementsByTagName('div');
// get the body element
var body = document.getElementsByTagName('body')[0];

// apply class to container div
dv.setAttribute('class', 'container');

// find out all those divs having class C
for(var i = 0; i < divs.length; i++)
{
   if (divs[i].getAttribute('class') === 'C')
   {
      // put the divs having class C inside container div
      dv.appendChild(divs[i]);
   }
}

// finally append the container div to body
body.appendChild(dv);

有人会详细说明我的要求吗?

4

1 回答 1

0

我建议:

function imgWrap(parent) {
    if (!parent || parent.nodeType !== 1) {
        return false;
    }
    else {
        var images = parent.getElementsByTagName('img'),
            newDiv = document.createElement('div'),
            tmp;
        newDiv.className = 'parent';
        for (var i = 0, len = images.length; i < len; i++) {
            tmp = newDiv.cloneNode(true);
            parent.insertBefore(tmp, images[i])
            tmp.appendChild(images[i]);
        }
    }
}

JS 小提琴演示

于 2013-07-19T21:19:25.157 回答