2009-05-15 8 views
0

を使用してWebページには、特定のHTML要素を記述するのdocument.writeを使用して取得します。私は要素は、私は(私は、既存の部品を変更するべきでないが、追加)既存のレガシーWebページを修正していたIDの問題

<script type="text/javascript" language="javascript"> 
    var v = document.getElementById('td_date_cal_0'); 
    alert(v); 
</script> 

Vを使用したとき、私はボタンを作成し、

<input type="button" id="mnbutton" onclick="mnLoader();" value="Click Me!" />; 
<script type="text/javascript" language="javascript" > 
    function mnLoader() { 
     var v = document.getElementById("td_date_cal_0"); 
     alert(v); 
    } <br /> 

</script> 

に、このようなクリックなど、ユーザーのアクションを必要とせずに要素を取得するにはどのように任意のアイデアを、クリックしたときにゼロになると?

おかげで、 EBE

答えて

1

私はあなたが取得しようとしている要素の前に、あなたのscript要素を配置している推測しています。

これを解決する最も簡単な方法は、body要素の終了タグの直前に、あなたのscript要素を置くことです。

8

onloadイベントにスクリプトを添付してみてください(documentまたはwindow)。

function mnLoader() { 
var v = document.getElementById("td_date_cal_0"); 
alert(v); 
} 
// Execute the function after the page has loaded 
document.onload = function() { 
mnLoader(); 
} 
+0

マティアスは正しいです。あなたが経験している問題は、取得しようとしているDOM要素が実際にDOMに、メモリにまだ追加されていないという事実によるものです。window.onloadは解決策ですが、他にもあります。 –

+0

またdocument.writeは有害で、必要ならばDOMメソッドやinnerHTMLを使う – annakata

1

ID「td_date_cal_0」の要素が作成される前にスクリプトが実行されるため、この問題が発生することが予想されます。

は、それがdocument.onloadイベントまでのコードを操作するか、ワイヤーされていることを要素の下にスクリプトを移動してみてください。

0

@Mathiasは、あなたの問題を解決する可能性の高い例を挙げました。これは、document.getElementByIdを使用してアクセスしようとしている要素が、試しているときにまだDOMにロードされていないということです。

しかし、可能な限り早くコードを実行できることに興味がある場合は、「dom:loaded」イベントまたはDOM準備完了イベントを観察することをお勧めします。これはwindow.onloadしかしなどPrototype.jsjQueryは助けることができるフレームワークを呼び出すよりも少し複雑です。

はマイケル・シャーマンはちょうどこの非常に機能語るthis pageている参照してください。

あなたは、その後のようなコードを書くことができます:あなたはフレームワークを使用したくない場合は、あなただけの標準のJavaScript呼び出しを使用して動作を再現することができますが、あなたが準備する必要があります明らかに


document.observe(document, 'dom:loaded', initFunction); 

function initFunction() 
{ 
    // this code will run as soon as DOM is loaded, 
    // but before any images are loaded 
} 

をブラウザー間の違いを扱うあなたはを見ることによって開始することができ、正しくコードの作業を以下のイベントや他のブラウザのための同様のイベント(すなわちDOMContentLoaded

0

をonreadystatechanged。

<input type="text" id="xxxx"/> 
<input type="button" id="mnbutton" onclick="mnLoader();" value="Click Me!" />; 
<script> 
     function mnLoader() { 
     var v = document.getElementById("xxxx").value; 
     alert(v); 
     } 
</script> 
関連する問題