4

私はこれをやろうとしています:

<script>
var MyItem;

MyItem = new myobj('testobj');

function myobj(id)
{
     var _id = id;

     this.toggle = function()
     {
       ...
     }

     function draw()
     {
         document.body.innerHTML += "<a onclick='" + MyItem + ".toggle();'>link</a>";
     }

     draw();

}
</script>

「関数が定義されていません」というメッセージが表示されますが、コンソールからMyItem.toggle()を正常に呼び出すことができます。私も試しました:

document.body.innerHTML += "<a onclick='(function(){" + MyItem + ".toggle();})()'>link</a>";

アンカーはjavascriptで動的に作成する必要があります。動的に作成されたアンカーからMyItemオブジェクトメソッドtoggle()を呼び出すにはどうすればよいですか?

ps、メモリからjsと入力しているので、構文エラーがある場合はお詫びします。

4

2 に答える 2

11

そのようなイベント ハンドラや要素を追加しないでください。DOM メソッドを使用する

var anchor = document.createElement("a");
anchor.innerHTML = "link";
anchor.onclick = function(){ MyItem.toggle(); };
document.body.appendChild(anchor);

私は実際にあなたがこのようなものを求めていると思います

var MyItem;

MyItem = new myobj('testobj');

function myobj(id) {
    var that = this;
    this.toggle = function () {
        alert(id);
    }
    function draw() {
        var anchor = document.createElement("a");
        anchor.innerHTML = "link";
        anchor.onclick = function () {
            that.toggle();
        };
        document.body.appendChild(anchor);
    }
    draw();
}
于 2013-01-31T00:13:10.283 に答える
2

それはうまくいきません。文字列のようなオブジェクトを使用しようとしています。次のことを試してください。

document.body.innerHTML += "<a onclick='(function(){MyItem.toggle();})()'>link</a>";
于 2013-01-31T00:12:55.967 に答える