2009-03-03 11 views
8

JavaScriptを含むHTMLを追加しています。javascriptを含むHTMLが追加されていないため、どうすれば実行できますか?

<td onclick="toggleDay('+data+',this,\'tue\');">T</td> 

<img src="img/cross.png" onclick="deleteAlarm('+data+');"> 

コードのこれら二つの作品は、私が追加てるHTMLの大きな量です。

ページが読み込まれているときに既に存在する場合は正常に動作しますが、追加するときは正常に動作しません。

あなたは私に何を提案しますか?それはDOMを追加するか、または後にJavaScriptを再解釈するためのいくつかの並べ替え要求が必要ですか?

編集:私は、データベースにAJAXでいくつかのものを追加している、と成功の上に、私はそれがために必要がある場合にHTMLを追加していますので、

ただ、いくつかの詳細は、私は、この問題によ。同じようにSOもコメントと同じです。

EDIT2:

でもそれについてのすべての議論と、答えのためのおかげで、それが働いて得ました。

答えて

4

私はこのようにそれを行うだろう:

まずidはあなたのHTMLに属性を追加:

<td id="toggleDayCell">T</td> 

<img src="img/cross.png" id="crossImg"> 

次に、ページのonloadのイベントで実行され、あなたの「イベントにアタッチJavascriptを持っていますに興味がある。

PrototypeJSでは、それは次のようになります。それは、クロスブラウザの互換性の世話をするため

プロトタイプ(またはjQueryの)のようなものを使用して
Event.observe(window, 'load', function(){ 
    if($('toggleDayCell')) { 
    Event.observe($('toggleDayCell'), 'click', function(event){ 
     //do stuff here 
    } 
    } 

    if($('crossImg')) { 
    Event.observe($('crossImg'), 'click', function(event) { 
     //do stuff here 
    } 
    } 
}); 

がいいです。

1

ドキュメントにHTMLを追加し、プログラムでonclickイベントをオブジェクトに追加します。

これは私の頭の上からですが...私はあなたがこのようにそれを行うことができると思います。

IE:

Object.onclick = someFuntion 

FF:

Object.addEventListener('click', someFunction); 
+0

あなたはどうやってそれをしますか? – fmsf

0

あなたはすべきですは、innerHTMLなどでonclickを設定する代わりに、addEventListener('click', /*...*/)を使用してください。

IEはaddEventListenerと完全に一致しています。そのためにもそれを補う必要があります。

(編集:。。IEはattachEvent()それを呼び出しますが、これはいくつかの使用であるホープ)

3

あなたがAJAX経由でHTMLを追加していますか?もしそうなら、あなたが戻ってくるJavaScriptを手作業でeval()する必要があります。あなたはdivの中に、応答をラップし、このような何かを行うことができます:

wrapper.getElementsByTagName("script") 
// for script in wrapper... 
eval(script.innerHTML) 

あなたはプロトタイプのようなライブラリを使用している場合は、はevalScripts()メソッドへの応答を渡すことができて、それははるかに簡単になります。

+0

私はちょうど絶望的な夜間のGoogle検索であなたの記事を見つけました。あなたは私の問題を解決しました。私はあなたの人を愛しています。 – adolfojp

+0

+1それでも、evalは避けなければならないと言っていますが、そうではありませんか? – fmsf

+0

はい、私は知っている人はいませんが、Ajaxレスポンスでjavascriptを実行する方法は他にありません。 – robmerica

0

AJAXにはいくつかの特権があります。特にIEの場合は特にそうです。例:innerHTMLプロパティを使用して、表要素(IE内)に何かを挿入/更新することはできません。要素ノードの挿入/更新/削除(またはイベントハンドラの追加)には、DOM関数を使用する方がよいでしょう。前述のeval()関数を使用して、DOMオブジェクトを使用してドキュメントを変更する動的にロードされたjavascriptを実行できます。

関連する問題