Javascript 用同一类替换所有div的innerHTML
我想用类“count”替换所有div的innerHTML:items1.innerHTMLJavascript 用同一类替换所有div的innerHTML,javascript,Javascript,我想用类“count”替换所有div的innerHTML:items1.innerHTML 我该怎么做呢?您可以通过jQuery这样做 $("div.count").html("new content"); 给你: var items = document.getElementById( 'items' ), divs = document.getElementsByClassName( 'count' ); [].slice.call( divs ).forEach(functio
我该怎么做呢?您可以通过jQuery这样做
$("div.count").html("new content");
给你:
var items = document.getElementById( 'items' ),
divs = document.getElementsByClassName( 'count' );
[].slice.call( divs ).forEach(function ( div ) {
div.innerHTML = items.innerHTML;
});
现场演示:
我使用这个[].slice.call(divs)
将节点列表转换为常规数组,这样我就可以对其调用forEach
方法
顺便说一句。我个人会使用一个库(比如jQuery)来克隆内容。更有效的选择器是$('div.count')-因为它依赖快速DOM操作'getElementsByTagName'来仅获取div作为起点。@Beejamin,它会按照OP的要求执行(“所有具有类'count'的div”)。不要选择额外的元素,你不应该对innerHTML做任何事情+1获取一个简单的JavaScript答案,但如果使用,它应该检查getElementsByClassName是否存在。@kinakuta
getElementsByClassName
和forEach
在IE8中没有实现。如果OP需要跨浏览器解决方案,则应使用库。如果不需要对IE8的支持,请使用我的代码。使用queryselectoral
,您将获得IE8支持,只要您摆脱.slice
到数组的转换和forEach
@patrick如果需要对IE8的支持(假设地说),您可以拥有一个IE8.js
文件(通过条件注释推送到IE8),其中将包含手动实现的getElementsByClassName
,forEach
,等等。仅用于IE8。这样,这些方法仍然可以使用(尽管IE8如此)。至于slice黑客,可能更合理的做法是使用toArray
实用函数(然后通过手动复制所有索引的引用以“慢方式”完成)。