0

コンストラクターSmartButton内でmakeHighlightという関数を実行しようとしています。makeHighlightは、SmartButtonオブジェクト(画像要素)をクリックするたびに実行されることになっているため、属性'onclick'をmakeHighlightに設定します。動作させることができません。まったく実行されないか、ページが読み込まれるとすぐに実行されます。

function SmartButton(buttonId, defaultImage, highlightImage, helpMsg) {
    var newLink = document.createElement('a');
        newLink.setAttribute('href', '#');

    var newImg = document.createElement('img');
        newImg.setAttribute('src', defaultImage);
        newImg.setAttribute('id', buttonId);
        newImg.setAttribute('onclick', "makeHighlight()");

    document.body.appendChild(newLink);
    newLink.appendChild(newImg);

    this.buttonId = buttonId;
    this.defaultImage = defaultImage;
    this.highlightImage = highlightImage;
    this.helpMsg = helpMsg;

    function makeHighlight() {
        newImg.setAttribute('src', highlightImage);
        console.log(this);
    }

}   

button1 = new SmartButton('button1', 'button1off.jpg', 'button1on.jpg', 'sup');
4

1 に答える 1

2

関数makeHighlightのスコープで定義しました。SmartButtonしたがってnewImg、クリックしても表示されません。このコードを試してください(内部SmartButton):

function makeHighlight() {
    newImg.setAttribute('src', highlightImage);
    console.log(this);
}
newImg.onclick = makeHighlight;

(最後の行に角かっこがないことに注意してください)そしてこの行を削除します:

newImg.setAttribute('onclick', "makeHighlight()");
于 2012-06-22T16:04:46.547 に答える