2011-08-06 77 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來做到這一點,因爲這是正確的做法。

我建議是這樣的:

HTML:

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

的Javascript(從Ajax調用成功處理程序放到頁面內容之後運行):

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

問題是我不想使用選擇器:/ –

+0

爲什麼不使用選擇器?這正是他們想要的! – jfriend00

1

它在頁面加載時使用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/

如果整個頁面被替換,這意味着你正在嘗試寫的內容時,該頁面已完成加載。如果文檔不能再寫入,它將打開一個新文檔來寫入。