0

グリースモンキーを使用してこれら 2 つのボタンを追加します。順序を逆にしてみましたが、常に 2 番目に追加されたボタンが機能します。他のボタンは onclick イベントを発生させません。

// Add the click to chat button
mydiv             = document.getElementById("optionalJobinfoData");
var btn           = document.createElement("input");
btn.type          = 'button';
btn.value         = 'Click to Chat';
btn.onclick       = function() { window.open(chatURL); };
mydiv.innerHTML  += "<i>Notify Dispatch</i><br><i>(stuck on job)</i>&nbsp;&nbsp;";
mydiv.appendChild(btn);

// Credentials button
mydiv             = document.getElementById("optionalJobinfoData");
btn               = document.createElement("input");
btn.type          = 'button';
btn.value         = 'Credentials';
btn.onclick       = function() { window.open(credsURL); };
mydiv.innerHTML  += "<br><br><i>DSL Credentials</i> ";
mydiv.appendChild(btn);
4

3 に答える 3

2

問題は mydiv.innerHTML += ... を実行することです

ここでの答えに似ています。 innerHTML を操作すると、子要素のイベント ハンドラーが削除されますか?

于 2013-02-08T18:24:52.107 に答える
1

次の行が問題を引き起こしています。

mydiv.innerHTML  += "<br><br><i>DSL Credentials</i> ";

これを行うのと同じです:

var oldHTML = mydiv.innerHTML;
var newHTML = oldHTML + "<br><br><i>DSL Credentials</i> ";

// This destroys everything inside the div and re-creates it based on the innerHTML.
mydiv.innerHTML = newHTML;

基本的に、div 内の要素を破棄し、html ソース コードに基づいて再作成します。ただし、onclick コードは innerHTML に含まれていません。

于 2013-02-08T18:37:58.883 に答える