如何用javascript编写css代码?(未捕获类型错误:无法设置未定义的属性“高度”)

如何用javascript编写css代码?(未捕获类型错误:无法设置未定义的属性“高度”),javascript,css,Javascript,Css,如何用javascript编写css代码?(未捕获类型错误:无法设置未定义的属性“高度”) javascript document.getElementById("slideshow").getElementsByClassName("arrow").style.height = "86px"; css #幻灯片。箭头{ 高度:86px; 宽度:60px; 位置:绝对位置; 背景:url('arrows.png')不重复; 最高:50%; 利润上限:-43px; 光标:指针; z指数:5000

如何用javascript编写css代码?(未捕获类型错误:无法设置未定义的属性“高度”)

javascript

document.getElementById("slideshow").getElementsByClassName("arrow").style.height = "86px";
css

#幻灯片。箭头{
高度:86px;
宽度:60px;
位置:绝对位置;
背景:url('arrows.png')不重复;
最高:50%;
利润上限:-43px;
光标:指针;
z指数:5000;
}

这里的关键是
getElementsByClassName
-elements的多元化。此方法返回类似数组的元素对象,而不仅仅是一个元素

要将样式应用于每个元素,需要循环遍历此类似数组的对象,并将样式添加到返回的每个元素:

var elems = document.getElementById("slideshow").getElementsByClassName("arrow");

for (var i = 0; i < elems.length; i++)
    elems[i].style.height = "86px";
var elems=document.getElementById(“幻灯片”).getElementsByClassName(“箭头”);
对于(变量i=0;i
文档。GetElementsByCassName返回一个数组

您必须循环它,或者如果您知道索引,请执行以下操作:

document.getElementById(“幻灯片”).getElementsByClassName(“箭头”)[0].style.height=“86px”

document.getElementById(“幻灯片”).getElementsByClassName(“箭头”)[i].style.height=“86px”

i
是您的循环变量。

一点理论:

更改HTML样式

要更改HTML元素的样式,请使用以下语法:

document.getElementById(id).style.property=new style
以下是一个例子:

//JavaScript演示
var changeBg=函数(事件){
log(“调用的方法”);
var me=event.target
,square=document.getElementById(“square”);
square.style.backgroundColor=“#ffaa44”;
me.setAttribute(“禁用”、“禁用”);
setTimeout(clearDemo,2000年);
}
函数clearDemo(按钮){
var square=document.getElementById(“square”);
square.style.backgroundColor=“透明”;
按钮。删除属性(“禁用”);
}
var按钮=document.querySelector(“按钮”);
按钮。添加EventListener(“单击”,更改bg);
控制台日志(按钮)
#正方形{
宽度:20em;
高度:20em;
边框:2件镶灰色;
边缘底部:1米;
}
钮扣{
填充:.5em2em;
}
JavaScript示例

点击我
,正如有人指出的那样

document.getElementsByClassName返回一个数组(N个对象)

document.getElementById返回一个元素(一个对象

这是因为N元素可以具有相同的类,但只有一个项可以具有特定ID

由于无法一次编辑多个项目的属性,因此必须循环这些项目并逐个编辑每个项目的属性

document.getElementById("slideshow").getElementsByClassName("arrow")[0].style.height = "86px";
document.getElementById("slideshow").getElementsByClassName("arrow")[1].style.height = "86px";
document.getElementById("slideshow").getElementsByClassName("arrow")[2].style.height = "86px";
.....
document.getElementById("slideshow").getElementsByClassName("arrow")[N].style.height = "86px";

这可以通过对
循环使用,或每个循环使用来实现。

@Prabhu当然可以can@JamesDonnelly:不知道,谢谢。@Prabhu否则会出现错误,说明GetElementsByCassName不是该对象的方法。或者使用
Array.prototype.forEach.call(elems,func)
或使用相应的x直接识别元素。和我的差不多,但我迟到了。干得好:)@Tibbers你的答案很有说服力。很多东西与这个问题完全无关。直截了当的回答可能会给你一些选票。另外,参考学校是个坏主意,因为它的质量不好。@Christoph谢谢你的反馈。我会把它记在心里,并在将来使用它。还删除了学校参考资料。谢谢这是一个很好的解释,但这能回答问题吗?是的。我刚开始先解释,然后才是代码。但詹姆斯·唐纳利首先回答了这个问题。不管怎样,祝你好运。哦,好吧,当我问的时候,代码的最后一部分不在那里:)是的,我正在完成:)