javascript - 如何在纯 javascript 中选择元素,将其包含在一个 div 中并向其添加一个类?

标签 javascript html css

搭建响应式网站,CMS的入口都是markdown的。因此,在所有新条目中将 div 编码到文档中是不切实际的。所以需要动态添加类。

我需要选择一个 <img>在帖子中然后用具有特定类的 div 包装它来设置它的样式。否则图像的原始宽度会影响布局。

image breaking layout

我通过将图像周围的 div 硬编码到帖子中找到了解决方案

HTML

<div class="imgWrap">
  <img>
</div>


CSS

.imgWrap { 
  margin: 0 auto 18px;
  width: 100%; 
}

.imgWrap img { 
  max-width: 96%; 
}

但这需要动态发生。我试过了

<script>
  var x=document.getElementsByTagName('div.post img')[0];
  document.write("<div class="imgWrap">");
  document.write("<img>");
  document.write("</div>");
</script>

我找到了这个 rel Javascript - How to add div class to createElement然后我点击了链接,包括 HTML DOM className Property这帮助我启动了脚本,但对下一步仍然感到困惑。

我正在使用 Jekyll 在 Ruby 中构建这个站点,以防您建议采用不同的方法来解决这个问题。

最佳答案

var img = document.querySelector('div.post img');
var div = document.createElement('div');
div.className = 'imgWrap';
img.parentNode.insertBefore(div, img);
div.appendChild(img);

这应该适合您。 querySelector一直工作到 IE8。

FIDDLE

如果有多个 <img> 的可能性标签,你可以使用 document.querySelectorAll然后遍历这些并进行相同的操作:

var imgs = document.querySelectorAll('div.post img');
for ( var i = 0, l = imgs.length; i < l; ++i ) {
    var img = imgs[i];
    var div = document.createElement('div');
    div.className = 'imgWrap';
    img.parentNode.insertBefore(div, img);
    div.appendChild(img);
}

关于javascript - 如何在纯 javascript 中选择元素,将其包含在一个 div 中并向其添加一个类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18266310/

相关文章:

javascript - 更改元素 ID 后将元素移动到另一个父元素

Jquery .animate 不适用于固定位置

javascript - Ajax 结果不是对象

javascript - 检测真实移动设备与开发工具仿真

html - 将CSS中DIV的内容存储在另一个文件中

jquery - 在 jquery bxslider 插件中垂直对齐图像

css - 中心引导表宽度为 100%?

javascript - typescript /Javascript : Call function by string name

javascript - ajaxcontroltoolkit 的 Ajax CDN 支持

javascript - 如何在滚动位置上平移谷歌地图