我试图尽可能少地使用jQuery,我想将一些jQuery代码翻译成纯JS。
我有这个:
$(".myDiv").css({"width": 500});
上面代码的纯JS等价物是什么?
答案 0 :(得分:6)
var els = document.querySelectorAll('.myDiv');
// If you want to get elements using its class name
// var els = document.getElementsByClassName('myDiv');
for(var i = 0, length = els.length; i < length; i++) {
els[i].style.width = '500px';
}
使用forEach
:
var els = document.querySelectorAll('.myDiv');
els.forEach(function(el, ind) {
el.style.width = '500px';
});
答案 1 :(得分:2)
有几种方法可以达到相同的效果,但你可以选择这样的方法:
document.querySelectorAll('.myDiv').forEach(function(el) {
el.style.width = '500px';
});
querySelectorAll选择所有特定的CSS选择器作为DOM元素的集合。 forEach遍历集合,将当前选定的元素传递给内部函数,然后使用style.width进行样式化。
答案 2 :(得分:1)
document.querySelectorAll('.myDiv').forEach(function(elem) {
elem.style.width = "500px";
})
querySelectorAll
获取元素,然后迭代元素并为每个元素设置样式。
答案 3 :(得分:1)
您只需使用document.getElementsByClassName()
获取此类的所有元素,然后迭代它们并使用style.width
更改其宽度:
Array.from(document.getElementsByClassName("myDiv")).forEach(function(div) {
div.style.width = "500px";
});
<强>演示:强>
Array.from(document.getElementsByClassName("myDiv")).forEach(function(div) {
div.style.width = "100px";
});
&#13;
.myDiv{
background-color:yellow;
}
&#13;
<div class="myDiv">A</div>
&#13;
注意:强>
我们使用 Array.from()
将document.getElementsByClassName
的结果视为Array
,因为它作为Nodelist
或者Array
返回 类似数组的对象 ,并且没有{{1}}属性和 .forEach
< / strong>旧浏览器中的方法。
答案 4 :(得分:0)
使用cssText
css(document.getElementById("red"),"color:red;font-size:24px")
function css(el,cssText){
el.style.cssText=cssText;
}
<div id="red">something</div>