Javascript 普通JS:如果包含图像,则将80%宽度元素设置为100%

Javascript 普通JS:如果包含图像,则将80%宽度元素设置为100%,javascript,wordpress,dom,width,Javascript,Wordpress,Dom,Width,在我的wordpress帖子中,我希望文本段落的宽度为80%,但图像的宽度为内容区域的100%。但是,图像被包装在标记中,因此我想编写一个小脚本,在一篇文章中查找所有p标记,如果任何p标记包含img元素,则为p标记指定一个在CSS中指定100%宽度的类 我找到了一种使用getElementByID的方法: var kids = document.getElementById('content').getElementsByTagName('p'); var looper = f

在我的wordpress帖子中,我希望文本段落的宽度为80%,但图像的宽度为内容区域的100%。但是,图像被包装在
标记中,因此我想编写一个小脚本,在一篇文章中查找所有p标记,如果任何p标记包含img元素,则为p标记指定一个在CSS中指定100%宽度的类

我找到了一种使用getElementByID的方法:

    var kids = document.getElementById('content').getElementsByTagName('p');

    var looper = function(t){
    for(i=0; i<kids.length; i++){
      if(t[i].firstChild.tagName === "IMG"){
        t[i].setAttribute("class", "postimg");
      }
    }
    };

looper(kids);
var kids=document.getElementById('content').getElementsByTagName('p');
变量活套=函数(t){

for(i=0;i
getElementsByClassName
返回类似数组的元素列表,因此您不能对其结果调用元素方法。您可以在结果中循环,并为每个结果运行循环,但我建议一个更简单的解决方案:

这将使
kids
成为循环代码应该使用的节点列表。您甚至可以更进一步,让
querySelectorAll
查找包含图像的段落:

var paragraph_images = document.querySelectorAll('.content p > img');

for (var i = 0; i < paragraph_images.length; i++) {
    paragraph_images[i].parentNode.className += ' postimg';
}
var段落_images=document.queryselectoral('.content p>img');
对于(变量i=0;i<段落长度;i++){
段落图像[i].parentNode.className+='postimg';
}

Perfect非常感谢您提供了这个简单的解决方案。我没有使用querySelectorAll,因为我被告知它不像其他方法那样跨浏览器。@Rup除非您针对IE 7及以下版本,否则浏览器支持不是问题。请参阅
var paragraph_images = document.querySelectorAll('.content p > img');

for (var i = 0; i < paragraph_images.length; i++) {
    paragraph_images[i].parentNode.className += ' postimg';
}