7

これは Firefox では機能しますが、IE では機能しません。どんな助けでも大歓迎です!ありがとう!

  var form = document.getElementById('theform')
    /* create the event handler */
    form.gen.onclick = function( evt ) {
        var f = evt.target.form
        var y = f.year.value
        var m = f.month.value
        genCalendar( document, y, m, 'theCalendar' )
    }
4

5 に答える 5

15

標準準拠のブラウザーと IE の両方でイベントのターゲットを取得するには、次を使用します。

var target = evt ? evt.target : window.event.srcElement;

MDCには、イベント オブジェクトのさまざまなプロパティの概要があります。

于 2009-06-06T20:34:29.600 に答える
1
  • このスクリプトはいつ実行されますか?DOMが完全にロードされた後、このスクリプトをonloadで実行する必要がある場合があります
<スクリプト>

関数go()
{{
  alert('domがロードされました:イベントハンドラーを今すぐ登録してください');
}

</ script>

<body onload = "go();">



</ body>

于 2009-06-06T21:02:52.553 に答える
1

前述のとおり、IE はイベント オブジェクトをパラメーターとして渡しません。これを試して:

var form = document.getElementById('theform')
  /* create the event handler */
  form.gen.onclick = function( evt ) {
    if(!evt)
      evt = window.event;
    var f = evt.target.form
    var y = f.year.value
    var m = f.month.value
    genCalendar( document, y, m, 'theCalendar' )
}

または、さらに良いのは、 Prototype.jsjQueryなどのクロスブラウザー ライブラリを使用することです。

于 2009-06-06T20:18:45.780 に答える
0

これが、jquery、YUI、またはプロトタイプなどの JavaScript ライブラリの使用を検討する必要がある理由です。これらのライブラリは、ブラウザー ベースの違いを抽象化し、コーディングを簡素化します。

于 2009-06-06T20:18:49.740 に答える
0

私自身の検索から、最も成功したのはこれでした

function clickHandler(e){
 var elem, evt = e ? e:event;
 if (evt.srcElement)  elem = evt.srcElement;
 else if (evt.target) elem = evt.target;

 alert (''
  +'You clicked the following HTML element: \n <'
  +elem.tagName.toUpperCase()
  +'>'
 )
 return true;
}

document.onclick=clickHandler;

非常に役立つ説明的なhttp://www.javascripter.net/faq/eventtargetsrcelement.htmから入手

于 2014-07-01T17:49:58.620 に答える