2011-08-06 6 views
0

私は本当に単純な問題を抱えていますが、何らかの理由で解決策を見つけることができません。 ページがajaxを使用して取得されています。インライン匿名要素の文字列の出力/書き込み - JQuery

問題は、私はJavaScriptの文字列を持っていると私は、例えば、(選択jqueryのをやってなくても)与えられた要素に書きたい、次のとおりです。

<script type="text/javascript">var myString = "Test";</script> 
<h1><script type="text/javascript">myString</script></h1> 

私はdocument.write(myString)を使用しようとしているが、ページ全体の内容を上書きしています。

+0

このコードは何を行いますか? – ShankarSangoli

答えて

1

document.write()は、元のページが読み込まれている間、ページ内でインラインで使用できます。ページが既に読み込まれた後に使用すると(これはajax呼び出しの実行時に起こります)、ページ全体をクリアしてから新しいページを作成します。したがって、既存のコンテンツを変更するために使用することはできません。

ページのロード後にHTMLを変更する方法は、javascriptを使用してDOMを操作する方法です。ほとんどの場合、セレクタを使用してページ内の適切なオブジェクトを検索して変更する必要があります。だから...なぜjQuery selectを使ってこれをやりたいのかがわからないのは、それが正しい方法だからです。

私はこのような何かをお勧めしたい:それは

jQuery("#viewTitle").html(jQuery.i18n.prop('view_title')); 
jQuery("#viewOutput").html(jQuery.i18n.prop('view_output')); 
+0

セレクタを使用したくないという問題があります。/ –

+0

セレクタを使用しないのはなぜですか?これはまさに彼らのためのものです! – jfriend00

1

HTML:

<h1 id="viewTitle"></h1> 
<h2 id="viewOutput"></h2> 

Javascriptを(ページの中に入れたコンテンツの後にAJAX呼び出しの成功ハンドラから実行)ページがロードされている間にコンテンツを出力するのにdocument.writeを使用するとうまくいきます:

<div id="asdf" title="Headline 1" name="Headline 2"></div> 

<h1> 
    <script type="text/javascript">document.write($('#asdf').attr('title'));</script> 
</h1> 

<h2> 
    <script type="text/javascript">document.write($('#asdf').attr('name'));</script> 
</h2> 

は(注:コードは、値のみを書くために取得するために、セレクタを使用しています。)

デモ:http://jsfiddle.net/Guffa/4Cxb3/

をページ全体を交換した場合、それはあなたがときに、ページコンテンツを作成しようとしていることを意味しロードが完了しました。書類がまだ書面で開かれていない場合は、書類を新規に開封します。

関連する問題