0

プログラムで onclick イベントを持つボタンを作成しようとしています。

 var removeFunction = "removeEmployee(" + "'" + phone + "'" + "," + "'" + pin + "'" + "," + "'" + employees[i].ID + "'" + ")";

    var removeButton = "<a onclick='" + removeFunction + "' " + "data-role='button' data-icon='delete' data-iconpos='notext'></a>";

上記の動的に作成されたコードと同じ JavaScript ファイルにこの関数があります。文字列パラメーターの周りに引用符を追加する必要があるため、壊れていると思います。上記のコードはその試みですが、作成されたマークアップを見ると..

onclick="removeEmployee(" 

何かが残りを切り捨てているのですが、何がわからないのですか?また、javascript ファイルに「removeEmployee」という名前の関数がある限り、これは実行されますか?

4

4 に答える 4

1

質問を避けるわけではありませんが、代わりに次のようなことをしないのはなぜですか。

var bindEvent = function(el, event, handler) {
  if (el.addEventListener){
    el.addEventListener(event, handler, false); 
  } else if (el.attachEvent){
    el.attachEvent('on'+event, handler);
  }
}

var removeButton = document.createElement("a");

removeButton.setAttribute("data-role", "button");
removeButton.setAttribute("data-icon", "delete");
removeButton.setAttribute("data-iconpos", "notext");

bindEvent(removeButton, "click", function(){
    removeEmployee(phone, pin, employees[i]['id']);
});
于 2012-09-10T21:21:17.517 に答える
0

XML コードでは、文字列の設定に二重引用符または単一引用符を使用できます。この問題では、一重引用符を使用する必要があり、文字列内で二重引用符を使用できます。

このような:

onclick='removeEmployee("45681", 1, "test")'

またはその逆:

onclick="removeEmployee('45681', 1, 'test')"

あなたが言及したコードを書くと、HTML パーサーには次のように見えます。

<element onclick='removeEmployee(' 45681=', 1, ' test=')' />

この状況では、要素には、「onclick」属性とIT IS WRONGだけでなく、3 つの異なる名前を持つ 3 つの属性があります。

乾杯

于 2012-09-10T21:19:57.210 に答える
0

試す:

var removeFunction = "removeEmployee('" + phone + "','" + pin + "','" + employees[i].ID + "')"; 

また:

var removeButton = "<a onclick='" + removeFunction + "' data-role='button' data-icon='delete' data-iconpos='notext'></a>";
于 2012-09-10T21:20:09.713 に答える
0

あなたが使用することができます

var a=document.createElement('a'),
attrs={data-role:'button',data-icon:'delete',data-iconpos:'notext'};
for(var i in attrs){a.setAttribute(i,attrs[i]}
a.onclick=function(){
    removeEmployee(phone,pin,employees[i].ID);
}
于 2012-09-10T21:22:13.533 に答える