1

これは私のコードです。入力であるini要素に対してonclickイベントが機能しない理由を尋ねることができますか。

JavaScript:

window.onload = function() {
    var img = document.getElementsByTagName('img');
    var div = document.createElement("div");
    img[0].onclick = function(event) {
        document.body.appendChild(div);
        var sion = document.getElementsByTagName('div');
        var val = document.defaultView.getComputedStyle(sion[0], null);
        var mouseX = event.clientX;
        var mouseY = event.clientY;
        document.styleSheets[0].cssRules[0].style.top = (mouseY - 20) + "px";
        document.styleSheets[0].cssRules[0].style.left = (mouseX - 20) + "px";
        var ini = document.createElement("input");
        document.body.appendChild(ini);
        var hoftag = document.styleSheets[0].cssRules[0].style.height;
        var result = hoftag.replace("px", "");
        result = parseInt(result);

        document.styleSheets[0].cssRules[1].style.top = (event.clientY - 20 + result) + "px";
        document.styleSheets[0].cssRules[1].style.left = (event.clientX - 40) + "px";
    };
    ini.onclick = function(event) {
        alert("hi");
    };
};

HTML:

<img src="jlin.jpg" id="image">
4

1 に答える 1

2

問題は、変数のスコープにあります。変数iniは 内にのみ存在しますimg[0].onclick = function(event) {。「JS忍者」の本からこの素晴らしい写真を参照してください:

ここに画像の説明を入力

コードを修正するには、次を試してください。

img[0].onclick = function(event){
    ...
    var ini = document.createElement("input"); 
    document.body.appendChild(ini);
    ini.onclick = function(event){
        alert("hi");
    };
    ...
};
于 2013-06-29T09:26:30.780 に答える