0

div 要素をクリックすると、クリックした div の ID を警告したいと思います。しかし、すべての div 要素で、配列の最後の値、つまり「e1」を警告しています。

<!DOCTYPE html>
<html>
<head>
    <title></title>
</head>
<body  onload="populate();">
    <script type="text/javascript">
    function populate() {

        var divArray = ["a1", "b1", "c1", "d1", "e1"];
        for (var x in divArray) {
            if (divArray[x] === 'a1')
                document.getElementById(divArray[x]).innerHTML = "aaaaa";
            else
                document.getElementById(divArray[x]).innerHTML = "Common";

            document.getElementById(divArray[x]).onclick = function() {
                getDiv(divArray[x]);
            };
        }
    }

    function getDiv(x)
    {
        alert(x);
    }

    </script>
    <div id="a1"></div>
    <div id="b1"></div>
    <div id="c1"></div>
    <div id="d1"></div>
    <div id="e1"></div>

</body>
</html>
4

4 に答える 4

3

あなたxxあなたが望んでいるものではありません。これは役立つかもしれません。

// ...
document.getElementById(divArray[x]).onclick = (function(n) {
    return function() {
        getDiv(divArray[n]);
    };
}(x));
// ...
于 2013-07-19T20:17:28.503 に答える
1

getDiv(divArray[x])クリックした要素の ID を返すため、に置き換えgetDiv(this.id)ます。

于 2013-07-19T20:15:34.057 に答える
0

クリック イベント (e) をクリック ハンドラに渡してみてください

        document.getElementById(divArray[x]).onclick = function(e) {
            console.log(e.toElement.id);
        };
于 2013-07-19T20:19:26.623 に答える
0

これは、実際に div をクリックするまでに for ループが既に終了しているためです。そのため、x はループが終了したときのものです。これを修正するには、電話する必要がありますgetDiv(this.id);

于 2013-07-19T20:17:09.823 に答える