使用核心Javascript向左和向右填充

时间:2013-04-08 09:30:22

标签: javascript jquery

我正在尝试使用此代码使用javascript左右填充,但它无法正常工作

document.getElementsByClassName('className').style.paddingLeft = paddingOfUl.toString()+"px" ;

获取此错误

未捕获的TypeError:无法设置未定义的属性“paddingLeft”

请帮忙告诉我这里我做错了什么。

5 个答案:

答案 0 :(得分:6)

getElementsByClassName会返回元素的列表,而不是一个元素。您需要索引到列表中以修改其中的元素。

只是第一个:

document.getElementsByClassName('className')[0].style.paddingLeft = paddingOfUl.toString()+"px" ;
// Change here -----------------------------^^^

所有这些:

var list = document.getElementsByClassName('className');
var i;
var padding = paddingOfUl.toString()+"px";
for (i = 0; i < list.length; ++i) {
    list[i].style.paddingLeft = padding;
}

另外:没有必要在toString上明确调用paddingOfUl,如果您尝试将字符串附加到数字,它将自动完成。所以:

...paddingLeft = paddingOfUl + "px";

......很好。

答案 1 :(得分:2)

你需要遍历元素:

var elements = document.getElementsByClassName('className');
for (var i = 0; i < elements.length; i++) {
    elements[i].style.paddingLeft = paddingOfUl.toString()+"px";
}

答案 2 :(得分:1)

document.getElementsByClassName('className')将返回一个元素数组。由于数组没有样式属性,因此会收到错误。

代码应该迭代数组返回的元素。

var elements = document.getElementsByClassName('className');

for(var i = 0; i < elements.length; i++){
   elements[i].style.paddingLeft = paddingOfUl.toString() + "px";
}

答案 3 :(得分:1)

var elements = document.getElementsByClassName('className');
// the above returns an Array-Like structure with a length property.

for (var i = 0, len = elements.length; i < len; i++) {
    elements[i].style.paddingLeft = "10px";
};

答案 4 :(得分:1)

您可以使用javascript更改任何元素的样式,如下所示:

document.getElementById("nameofelement").style.paddingLeft="10px";

代替 paddingLeft ,您也可以使用 background =“color” color =“grren”等。