我希望能够对函数中创建的div进行样式(或更改)。然而,这种“改变”绝不能在同一职能上进行。考虑到函数中创建的变量在该函数的本地范围内,如何从外部到达创建的div(或其他相关的更改)?我已经尝试过用querySelector定位节点,但是控制台返回未指明的TypeError,因为它找不到变量。
JS中的示例代码:
let container = document.querySelector('.container');
let divClass = document.querySelector('.div-class');
divClass.style = "backgroundColor: green";
container.addEventListener('click', () => {
let createdDiv = document.createElement('div');
container.appendChild(createdDiv);
createdDiv.classList.add('div-class');
})
发布于 2022-07-20 22:44:30
代码的问题是在元素创建之前进行查询。
let container = document.querySelector('.container');
container.addEventListener('click', () => {
let createdDiv = document.createElement('div');
container.appendChild(createdDiv);
createdDiv.classList.add('div-class');
})
let someButton= document.querySelector('.someButton');
someButton.addEventListener('click', () => {
let divClass = document.querySelector('.div-class');
divClass.style.backgroundColor = "green";
})
.container,.someButton{
border:1px solid black;
background:grey;
margin-bottom:4em;
}
.div-class{
height:40px;
width:40px;
border:1px solid red;
}
<div class="container">
container
</div>
<div class="someButton">
someButton
</div>
在这个片段中,对创建的div的访问将放在另一个click事件中。如果在.someButton
之前单击.container
,它将创建一个错误,但如果您单击之后它将工作,因为div将被创建。
发布于 2022-07-20 23:07:04
您可以在全局范围内创建一个变量,并将其分配给稍后创建的div。
const container = document.querySelector('.container');
// assign sample element to avoid error if new_div is used before assigning.
let newDiv = document.createElement('div');
container.addEventListener('click', () => {
let newDiv = document.createElement('div');
container.appendChild(newDiv);
newDiv.classList.add('div-class');
})
newDiv.style = "backgroundColor: green";
https://stackoverflow.com/questions/73061667
复制相似问题