0

次のようにsetInnerXTHML()に「onClick」属性を含めると、次のようになります。

var innerHtml = '<span>Build Track: Select a city where track building should begin'+
                '<div id="action-end">'+
                '<form>'+
                '<input type="button" value="End Track Building" id="next-phase" onClick="moveTrainAuto();" />'+
                '</form>'+
                '</div></span>';
actionPrompt.setInnerXHTML(innerHtml);
var btn = document.getElementById('next-phase');
btn.addEventListener('click', 'moveTrainAuto');

'onClick'は削除されます。これは、Firebugで要素を検査することでわかります。これはそれが明らかにするものです:

<input id="app148184604666_next-phase" type="button" value="End Track Building"/>

onClickで呼び出される関数は次のとおりです。

function moveTrainAuto(evt) {
debugger;
  ajax = new Ajax();
  ajax.responseType = Ajax.JSON;
  ajax.ondone = function(data) {
debugger;
    if(data.code == 'UNLOAD_CARGO') {
      unloadCargo();
    } else if (data.code == 'MOVE_TRAIN_AUTO') {
      moveTrainAuto();
    } else if (data.code == 'TURN_END') {
      turnEnd();
    } else {
      /* handle error */
    }
  }
  ajax.post(baseURL + '/turn/move-trains-auto');
}

ご覧のとおり、「onClick」と「addEventListener」の両方を試しました。どちらも機能しません。何か案は?

4

1 に答える 1

0

関数名を渡す代わりに、関数を渡してみてください。

btn.onClick = moveTrainAuto;

いいえ

btn.onClick = 'moveTrainAuto';
于 2009-10-14T05:13:44.340 に答える