使用javascript进行某些类型的DOM操作需要全局变量吗?

时间:2012-09-01 08:54:44

标签: dom

在下面的示例代码中,我想知道为什么名为 child 的变量必须是全局的(没有 var )才能使代码生效。我还想知道下面的代码是否被认为是不好的做法,因为有一个全局变量以及如何更好地实现下面代码的实现再现。感谢。

<!DOCTYPE html>
<meta charset="UTF-8">
<title>dom</title>

<div class="product">
<h2> Product Name </h2>
<img src="pic.jpg" />
<p> Description </p> </div>

<script>
var products = document.getElementsByClassName("product"), 

        child;   // how come var breaks the code ?

    for ( i = 0; i < products.length; i++) {
        child = products[i].firstChild;
        while (child.nodeType !== 1) {
            child = child.nextSibling;
        }
        console.log(child);
    }
</script>

1 个答案:

答案 0 :(得分:1)

您已经有var,因为在孩子之前有一个逗号。因此添加var会给你

var product, var child

这是非法的。

child不是全局的,因为

中的var
var product, child

适用于var之后的整个变量列表。 (好吧,child无论如何都是全局的,因为它没有嵌套在function中。但这与varvar没有关系。)

如果您坚持让var两次,请写

var product = ... ;
var child;