Javascript 每次循环时按id获取元素
所以我的问题是,每当我运行这个循环时,它只会在第一次翻转时获取对元素的更改。有没有办法让它每次都做出这些改变Javascript 每次循环时按id获取元素,javascript,Javascript,所以我的问题是,每当我运行这个循环时,它只会在第一次翻转时获取对元素的更改。有没有办法让它每次都做出这些改变 <script> for ( i=0; i<5; i++){ document.write('<div id=\"blah\" >text</div>'); var b = document.getElementById("blah"); b.style.width ="200px"; b.style
<script>
for ( i=0; i<5; i++){
document.write('<div id=\"blah\" >text</div>');
var b = document.getElementById("blah");
b.style.width ="200px";
b.style.backgroundColor="yellow";
}
</script>
for(i=0;iid
在文档中必须是唯一的。因此问题就出现了。即使存在多个匹配项,DOM也只会返回1个节点
您可以这样做:
for (var i=0; i<5; i++){
var div = '<div class="blah" >text</div>';
div.style.width ="200px";
div.style.backgroundColor="yellow";
document.write(div);
}
for(var i=0;iid
在文档中必须是唯一的。因此存在问题。即使存在多个匹配项,DOM也只会返回1个节点
您可以这样做:
for (var i=0; i<5; i++){
var div = '<div class="blah" >text</div>';
div.style.width ="200px";
div.style.backgroundColor="yellow";
document.write(div);
}
for(var i=0;i我有两个想法来克服这个问题。第一个是创建元素,更改其样式,并附加它
<script type="text/javascript">
for (var i = 0; i < 5; i++) {
var div = document.createElement("div");
div.style.width = "200px";
div.style.backgroundColor = "yellow";
document.appendChild(div);
}
</script>
对于(变量i=0;i<5;i++){
var div=document.createElement(“div”);
div.style.width=“200px”;
div.style.backgroundColor=“黄色”;
文件.附件(分部);
}
另一个想法是,您不需要对DOM元素的引用,因为您只是在更改样式,所以可以使用CSS应用样式。例如:
<style type="text/css">
div.something {
width: 200px;
background-color: yellow;
}
</style>
<script type="text/javascript">
for (var i = 0; i < 5; i++) {
document.write("<div class='something'>text</div>");
// Or use the createElement/appendChild approach from above,
// where you'd need to set the div.className property as "something"
}
</script>
什么{
宽度:200px;
背景颜色:黄色;
}
对于(变量i=0;i<5;i++){
文件。书写(“文本”);
//或者从上面使用createElement/appendChild方法,
//需要将div.className属性设置为“something”
}
我有两个想法来解决这个问题。第一个是创建元素,更改其样式,然后附加它
<script type="text/javascript">
for (var i = 0; i < 5; i++) {
var div = document.createElement("div");
div.style.width = "200px";
div.style.backgroundColor = "yellow";
document.appendChild(div);
}
</script>
对于(变量i=0;i<5;i++){
var div=document.createElement(“div”);
div.style.width=“200px”;
div.style.backgroundColor=“黄色”;
文件.附件(分部);
}
另一个想法是,您不需要对DOM元素的引用,因为您只是在更改样式,所以可以使用CSS应用样式。例如:
<style type="text/css">
div.something {
width: 200px;
background-color: yellow;
}
</style>
<script type="text/javascript">
for (var i = 0; i < 5; i++) {
document.write("<div class='something'>text</div>");
// Or use the createElement/appendChild approach from above,
// where you'd need to set the div.className property as "something"
}
</script>
什么{
宽度:200px;
背景颜色:黄色;
}
对于(变量i=0;i<5;i++){
文件。书写(“文本”);
//或者从上面使用createElement/appendChild方法,
//需要将div.className属性设置为“something”
}
您需要将元素添加到DOM中,以便以后能够访问它
for(var i=0;i<5;i++)
{
//I'm not sure if you are just trying to make these changes each iteration
//or create a new element each time. If you are trying to create a new element
//each time. I'd def consider going a diff route i.e. use classes.
var b;
if( i==0 ){
b = document.createElement("DIV");
b.id = "blah";}
else{
b = document.getElementById("blah");}
b.style.width ="200px";
b.style.backgroundColor="yellow";
}
for(var i=0;i您需要将元素添加到DOM中,以便以后能够访问它
for(var i=0;i<5;i++)
{
//I'm not sure if you are just trying to make these changes each iteration
//or create a new element each time. If you are trying to create a new element
//each time. I'd def consider going a diff route i.e. use classes.
var b;
if( i==0 ){
b = document.createElement("DIV");
b.id = "blah";}
else{
b = document.getElementById("blah");}
b.style.width ="200px";
b.style.backgroundColor="yellow";
}
for(var i=0;这可能会有帮助。此外,您忘记声明i
。id是唯一的,您应该使用name属性并使用getElementsByName()这可能会有所帮助。此外,您忘记声明i
。id是唯一的,您应该使用name属性并使用getElementsByName()我试图在每次迭代中进行更改,每次都将这些更改打印出来。这些更改来自不同循环中的一个单独的php变量,但这似乎不是问题所在。主要问题是,我似乎无法根据影响循环中元素的样式来多次更改元素。有更好的方法吗?没有这些解决方案中有一个似乎解决了这个问题。顺便说一句,感谢大家的回答!使用jQuery会让事情变得更简单,但是循环的目的是什么?是有几个元素需要更改,还是每次发生事情时都要更改一个元素?我每次循环都会更改一个元素,但是我ant it可以在每次元素更改时打印出来。使用您提供的代码,此循环将创建一个元素,然后设置一些样式,在以后的迭代中不做任何更改。它只是反复使用相同的值设置这两个CSS属性。期望的效果是什么?基本上我正在使用从数据库中获取多个值,以便在每次迭代时使用新值动态更改唯一元素的宽度值,但由于每次值的数量都是新的,因此我必须使其成为一个循环。理想的效果是根据这些值生成一个图,通过更改每个元素的样式来表示。我正在尝试更改每次迭代都会重复,每次都会将这些更改打印出来。这些更改来自不同循环中的一个单独php变量,但这似乎不是问题所在。主要问题是,我似乎无法基于影响循环中元素的样式来多次更改元素。有没有更好的方法来做到这一点?这些解决方案都没有em来解决这个问题。顺便说一句,感谢大家的回答!使用jQuery会让事情变得更简单,但是循环的目的是什么?是有几个元素需要更改,还是每次发生事情时都要更改一个元素?我每次循环都要更改一个元素,但我希望它打印出元素。使用您提供的代码,这个循环将创建一个元素,然后设置一些样式,在以后的迭代中不做任何更改。它只是用相同的值反复设置这两个CSS属性。期望的效果是什么?基本上我使用的是da中的几个值tabase可以在每次迭代时动态更改唯一元素的宽度值,每次使用新值,但由于每次的值数量都很新,因此我必须将其设置为循环。理想的效果是创建一个图形,通过根据值更改每个元素的样式来表示。