0

これは、ボタンの作成に使用したコードです。

var dfom = document.createElement('div');
dfom.setAttribute("id","options");
dfom.innerHTML = "<input type=\"button\" value=\"Say HI\" onclick=\get()\ />";
dfom.style.padding = '10px';
document.body.insertBefore(dfom, document.body.firstChild);

ボタンは正常に作成されます。正しく表示されます。それでそれをテストするために、私はこれをしました:

function get()
{
alert("HI");
}

ただし、ボタンをクリックしても何も起こりません。何か助けてください?ありがとう!

4

4 に答える 4

1

関数名も引用符で囲む必要がありますonClick="get();"。また、時間があるときはいつでもイベントリスナーを読んでください

于 2013-03-26T22:42:40.687 に答える
1

正しいJavaScriptコードを記述したい場合は、次のようにする必要があります。

var dfom = document.createElement("div"),
    button = document.createElement("input");

button.type = "button";
button.value = "Say HI";
button.addEventListener("click", function() {
    alert("HI");
}, false);

dfom.id = "options";
dfom.style.padding = "10px";
dfom.appendChild(button);

document.body.insertBefore(dfom, document.body.firstChild);

デモ:http: //jsfiddle.net/TKdYh/

于 2013-03-26T22:53:11.483 に答える
1

は周りに\あるはずですが、もっと考慮すべき点があります。つまり、関数はグローバルに利用可能である必要があるため、実際にはコールバックの外部または別のコールバックで定義する必要があります。次のような設定が必要になります。\"get()getonload

http://jsfiddle.net/CZ2y4/

...これはコールバックgetの外部を定義します。onLoadこれにより、コールバックを使用できるようになりますonclick

また、次ではなく、標準のイベントバインディングを使用しますonclick

dfom.innerHTML = "<input type=\"button\" value=\"Say HI\">";
dfom.firstChild.addEventListener('click', get);

http://jsfiddle.net/CZ2y4/1/

于 2013-03-26T22:57:18.503 に答える
0

以下は私のために働きます:

window.onload = function() {
  var dfom = document.createElement('div');
  dfom.id = "options";
  dfom.innerHTML = '<input type="button" value="Say HI" onclick="get()">';
  dfom.style.padding = '10px';
  document.body.insertBefore(dfom, document.body.children[0]);
}

function get() {
  alert("HI");
}

注意すべき点:

  1. 標準のDOMプロパティの場合、通常はプロパティを設定する方が適切です。一貫性のない実装であるため、setAttributeは使用しないでください。

  2. スクリプトには一重引用符を使用し、makrupには二重引用符を使用する方が明確です。そうすれば、引用符を引用するために多くの円記号を使用する必要がなくなります。

  3. 厳密には、HTML属性値は、特定の文字が含まれている場合にのみ引用符で囲む必要があります。その文字のセットが何であるかを覚えているよりも、それらすべてを引用する方が簡単です。ブラウザも非常に寛容であるため、一部のブラウザでは引用されるべきであるが他のブラウザでは引用されていない引用されていない文字を回避できます。

于 2013-03-26T23:02:36.803 に答える