-4

タスクは単純ですが、それを解決するには私の経験では十分ではありません。eventListiner で外部変数を使用する必要があります。外部変数を使用しようとすると、「未定義」になります。これはクロージャーによって解決されているようですが、それがどのように機能するのか完全には理解できません。

不正なコード:

function myfunc(){
    title = "Head";
    console.log(title);//Head
    document.getElementById("test").onclick = function(){
        console.log(title);//undefined
    }

}

正しいコード:

function myfunc(){
    title = "Head";
    console.log(title);//Head
    document.getElementById("test").onclick = function(){
        //some magic...
        console.log(title);//Head
    }

}

あなたの助けを願っています。ありがとう。


残念ながら、あなたの答えは役に立ちません。これはすべて試しましたが、簡単だったらここには書きません。それでも、私はそれを自分で作りました:

function myfunc(){
            function cls(it){
                return function(){
                    console.log(it);
                }
            }
            title = "head";
            document.getElementById("test").addEventListener("click",cls(title), false);//head
    }

ありがとう、少なくともあなたは助けようとしました、そしてマイナスにも感謝します。

4

2 に答える 2

0

魔法はいらない。グローバルに持っているほうがいいです。

title = "Head";
function myfunc(){        
    console.log(title);//Head
    document.getElementById("test").onclick = function(){  // you can't have like this
        console.log(title);//Head
    }    
}
于 2013-07-17T15:20:55.557 に答える
0

からタイトルを引き出しますmyfunc():

var title = "Head";
function myfunc() {
  document.getElement...
}
于 2013-07-17T15:21:20.170 に答える