未捕获 TypeError:无法设置未定义的属性“background”。将样式添加到类中
2018-06-17
1697
我尝试添加一些背景样式,效果很好,但是它显示了错误,但我不知道如何使用 for 语句添加样式。 无需逐一执行。
我遇到的另一个问题是,如果我记录我的 amarillos。 类,它会说
undefined
并且
false
因为在 HTML 中我定义了 amarillos 在西班牙语中是黄色的。
所有代码都运行良好,只是我尝试使用 var amarillos 时遇到了麻烦。 谢谢
代码:
<!DOCTYPE html>
<html lang="es" dir="ltr">
<head>
<meta charset="utf-8">
<title>Java Script Avanzado</title>
</head>
<body>
<h1>Sesión de Java Script Avanzado</h1>
<p>Nuestro primer Script en JS Avanzado</p>
<section id="miSeccion">
<h1>Listado de texto de los divs</h1>
<hr>
</section>
<div class="miCaja" id="miCaja">
Hola soy una caja
</div>
<div class="rojo">
Soy el primer div!
</div>
<div class="amarillo">
Soy el segundo div
</div>
<div class="amarillo">
Soy el tercer div
</div>
<script type="text/javascript" src="dom.js">
</script>
</body>
</html>
'use strict'
//DOM - Document Object Model
function cambiaColor(color) {
caja.style.background = color;
}
//Conseguir elementos con un ID concreto
//var caja = document.getElementById('miCaja');
var caja = document.querySelector("#miCaja")
caja.innerHTML = "Texto en la caja desde html";
caja.style.background = "red";
caja.style.padding = "20px";
caja.style.color = "white";
caja.className = "hola";
console.log(caja);
// Conseguir elementos por sus etiqueta
var todosLosDivs = document.getElementsByTagName("div");
var div2 = todosLosDivs[2];
div2.innerHTML = "ya no me gusto lo escrito anterior";
div2.style.background = "yellow";
//todosLosDivs.forEach((valor indice)=>{
var seccion = document.querySelector("#miSeccion")
var hr = document.createElement('hr');
var valor;
for(valor in todosLosDivs){
if (typeof todosLosDivs[valor].textContent == 'string' ) {
console.log(todosLosDivs[valor]);
var parrafo = document.createElement("p");
var texto = document.createTextNode(todosLosDivs[valor].textContent);
parrafo.append(texto);
seccion.append(parrafo);
}
}
seccion.append(hr);
//Conseguir elementos por su clase css
var amarillos = document.getElementsByClassName("amarillo");
console.log(amarillos);
console.log(amarillos.className);
var color;
for(color in amarillos){
amarillos[color].style.background = "yellow";
}
2个回答
那怎么样?它实际上返回一个 HTMLCollection,每个索引处都有您的元素,因此您必须指定要操作的集合的哪个索引。
我希望我帮到了您 O:-)
很棒的循环应该是这个:
//Conseguir elementos por su clase css
var amarillos = document.getElementsByClassName("amarillo");
for (let amarillo of amarillos)
{
amarillo.style.background = "yellow";
}
console.log(amarillos);
console.log(amarillos[0]);
console.log(amarillos[0].style.background);
console.log(amarillos[0].className);
Martin Melichar
2018-06-17
像这样编辑从末尾算起的第 7 行:
var amarillos = Array.from(document.getElementsByClassName("amarillo"));
因为
document.getElementsByClassName("amarillo")
返回
HTMLCollection
,它与
Array
2018-06-17