1

JSFiddle で何かをテストしようとしていますが、上記のエラーが発生しています。

これはHTMLです:

<a onclick="populate();return false;" class="populate" href="?hello">Hello</a>
<a onclick="populate();return false;" class="populate" href="?hello">One More</a>
<a onclick="populate();return false;" class="populate" href="?hello">Another One</a>
<a onclick="populate();return false;" class="populate" href="?hello">Another Other One</a>

Javascript:

function populate(){
        var populate = document.getElementsByClassName('populate');     
        for(var i=0; i < populate.length; i++)
            {
                var item = populate[i];
                item.addEventListener('click', function() {
                    var current = this.getAttribute('href');
                    alert(current);
                }, false);
            }
        return false;
    }

JSFIDDLE リンク

ヘルプや提案をいただければ幸いです。

4

2 に答える 2

1

JavaScript の順序に問題があります。インライン JavaScript イベント ハンドラを使用する場合は、使用するすべての関数が事前に定義されていることを確認してください。

あなたの場合、関数populate()onloadイベントで定義されているため、インライン JavaScript が解析される時点では、ブラウザーには認識されません。JavaScript の実行を「No wrap - in <head>」に変更するだけで問題ありません。

更新されたフィドル

編集(私のコメントから)

それぞれのクリック ハンドラーがpopulate()関数内で割り当てられ、クリック後にのみ実行されるため、アラートは 2 回目のクリック後にのみ機能します。

ただし、この新しい fiddleのように、割り当てを変更できます。

于 2013-07-15T10:09:33.523 に答える
0

No Wrap in Body左側のパネルの 2 番目のドロップダウンで選択する必要があります

デモ:フィドル

于 2013-07-15T10:07:10.447 に答える