質問

一時間前から掲載してい 何の問題もjavascriptメリカ-サンフランシスコお答えでき.Meder指摘され、以下の質問:

以下のコードがこのクリックして"、"要素alert(-1)により、この"i"は、onclickとしての機能を参考としてではなく値:

<a href="#">text</a><br><a href="#">link</a>
<script>
var as = document.getElementsByTagName('a');
for ( var i = as.length; i--; ) {
    as[i].onclick = function() {
        alert(i);
        return false;
    }
}
</script>

ここでの問いはどうすればいい 実施のonclick 機能を保持していかな です。

わからないの答えになります。どこを直せばいいの?うたのコピーは参考値ではなく、実際の。

側の質問:すべての変数の種類として渡された。せであるかどうかでprimitityタイプまたはオブジェクト?

意思によりお願い申し上げます。

役に立ちましたか?

解決

この問題は、どのように生活をしているかを知る 閉鎖 です。していなければなりませんかjavascriptを得た範囲内で機能的ではなくブロックを基準として、Cなど)を行います。

この"stantard"ソリューション:

<a href="#">text</a><br><a href="#">link</a>
<script type="text/javascript">
var as = document.getElementsByTagName('a');
for ( var i = as.length; i--; ) {
    as[i].onclick = (function(i) {
        return function() {
            alert(i);
            return false;
        }
    })(i);
}
</script>

他のバージョンは 正確に 同様のことがわかりやすい場合に慣れていない閉鎖および範囲JSは:

for ( var i = as.length; i--; ) {
    as[i].onclick = (function(number) {
        return function() {
            alert(number);
            return false;
        }
    })(i);

を考えたんですか?

他のヒント

<a href="#">text</a><br><a href="#">link</a>
<script>
var as = document.getElementsByTagName('a');
for ( var i = as.length; i--; ) {
    as[i].onclick = function() {
        return function() {
           alert(i);
           return false;
        }
    }();
}
</script>

多分?

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top