2013-03-27 80 views
-2

我有兩個不同的頁面,mouth.html和nose.html。我想從mouth.html得到一個名字。因此,當用戶訪問nose.html時,它會從nose.html中的mouth.html中打印出該地點的名稱。我怎麼能在Javascript中做到這一點?試圖獲取標籤名稱但不工作

這是mouth.html代碼

<h1 class="man" style="clear:both;">{{ moot.name }}</h1> 

在nose.html,我試過,但它不是在nose.html工作

<script language="javascript"> 
    $("h1.man").load("mouth.html",function(data){ 
     var value=$(data).find("h1.man").attr("man") 
    }); 

</script> 

全碼

<head> 
    <script language="javascript"> 
     $.get('mouth.html', function(data) { 
     var mootName = $(data).text(); 
     // Do something with mootName here 
     alert(mootName); 
    }); 
    </script> 
    </head> 
    <body> 
    <form action="." method="POST"> 
{% csrf_token %} 

    <div class="post-fed"> 
<p><label for="id_event_date">Event date:</label><input type="text" name="event_date" id="id_event_date" /><span class="helptext">E.g 2012-01-00.YYYY/MM/DD</span></p> 
<p><label for="id_end_date">End date:</label><input type="text" name="end_date" id="id_end_date" /><span class="helptext">E.g. 2012-01-00.YYYY/MM/DD</span></p> 
<p><label for="id_event_information">Event information:</label><textarea id="id_event_information" rows="10" cols="40" name="event_information"></textarea><span class="helptext"> E.g. eating etc</span></p> 
<p><label for="id_full_name">Full name:</label><input id="id_full_name" type="text" name="full_name" maxlength="100" /></p> 
<p><label for="id_e_mail">Email:</label></th><td><input id="id_e_mail" type="text" name="e_mail" maxlength="100" /></p> 
<p><label for="id_phone_no">Phone no:</label></th><td><input id="id_phone_no" type="text" name="phone_no" maxlength="100" /></p> 
<input type="submit" class="put" value="Send"/> 

</form> 
</div> 
</body> 
+0

'var value = ...'什麼也看不見。它只是聲明一個變量,然後由於函數結束而立即丟棄該變量。 – 2013-03-27 23:06:41

+0

只需注意,.attr(「man」)將獲得屬性man的值,如

,這兩種方法都不是有效的html。 嘗試使用.attr(「class」)來獲取man值或.text()以獲取內部文本。不知道你想從.attr(..)得到什麼樣的價值,也可以看到其他解決方案的其他答案。 – 2013-03-27 23:36:59

+0

我認爲你需要澄清你的問題。你想從mouth.html獲得'{{moot.name}}',然後在nose.html中做什麼?記錄它?警報?修改你的頁面的一部分? – ernie 2013-03-27 23:39:05

回答

1

您可以直接像這樣加載元素:

$('h1.man').load('mouth.html h1.man'); 

參見http://api.jquery.com/load/

編輯:

正如MichaelGeary指出的那樣,這也複製元件,這是不希望(<h1><h1></h1></h1>)。這將是更好的:

$.get('mouth.html', function(data) { 
    var newText = $(data).find('h1.man').text(); 
    $('h1').text(newText); 
}); 
+0

即使如Altinak所說,「h1.man」是根節點嗎? – 2013-03-27 23:12:18

+0

@JanDvorak文檔表明它會,儘管看起來OP有負載工作 - 這是他正在看的內容。 – Alnitak 2013-03-27 23:13:34

+0

是的,'h1.man'的功能與其他jQuery選擇器一樣,根據文檔: 「與.get()不同,.load()方法允許我們指定遠程文檔的一部分插入。這是通過url參數的特殊語法實現的。如果字符串中包含一個或多個空格字符,則第一個空格後面的字符串部分將被假定爲一個jQuery選擇器,用於確定要加載的內容。「 – 2013-03-27 23:13:52

1

.find將只匹配後代節點,您h1是在樹的頂端。您可以使用.filter('h1.man')來獲得匹配的頂級節點。

但是請注意,回調將一次剛插入每個頂級元素來調用(在this通過該節點),所以如果<h1>真的是你的頂級節點,則可以只使用:

var value = $(this).attr(...); 

這比使用HTML字符串調用$(data)更有效率,因爲$(data)只是創建另一個內存中的下載內容副本。

如果我理解正確的文檔,你還需要調用​​在父現有h1.man元素,因爲​​將插入加載HTML 指定的元素(替換現有的內容),而不是取代最初指定的元素。

這也意味着,這位家長必須包含h1.man元素,提示你需要的是HTML這樣的:

<div id="h1_man_cont"><h1 class="man"> ... </h1></div> 

和JS:

$('#h1_cont_man').load('mouth.html', function(data) { 
    var value = $(this).attr(...); 
}); 
+0

是什麼讓你覺得'h1'是根? – 2013-03-27 23:08:57

+0

@JanDvorak因爲這就是OP說的 - _「這是口中的代碼。HTML「_ – Alnitak 2013-03-27 23:09:42

+0

哦。不過有點兒奇怪,這是_entire_內容。 – 2013-03-27 23:10:33

0

正如你可以看到各種答案和評論在這裏,我們都對你想要做的事情有點困惑。所以讓我把它分成兩個單獨的問題,我們可以分別查看每個問題。

第一個問題更清楚一點。你想獲得mouth.html的內容並從中獲取一些數據。 mouth.html從這個Django的模板生成一個文件:

<h1 class="man" style="clear:both;">{{ moot.name }}</h1> 

這是整個模板;沒有<html><body>或其他任何東西。

因此,舉例來說,如果你的Python變量moot.name是「邁克」的mouth.html的全部內容將是:

<h1 class="man" style="clear:both;">Mike</h1> 

現在我們要加載該文件,並搶「邁克」(或其他)從中。我們是這樣做的:

$.get('mouth.html', function(data) { 
    var mootName = $(data).text(); 
    // Do something with mootName here 
}); 

這是如何工作:$(data)給你整個<h1>標籤作爲一個jQuery對象,然後.text()抓住從它的內部文本內容。

現在接下來的部分,該怎麼處理這個名字?你必須弄清楚,或者更詳細地描述你想做什麼,因爲那一部分還不清楚。

+0

感謝您的答覆。我想nose.html頁面上顯示的名稱一樣,它會顯示「你是關於預訂LAV花園」在預訂表格的頂部,所以當用戶書園,這將節省的預訂和他們訂好了地點的名稱。希望你明白我的意思?或者我應該說明它在Microsoft Word和將文件發送到你? – picomon 2013-03-28 21:52:05

+0

OK,我想我跟着你了。不幸的是,這是一個更詳細和一般什麼樣的支持,比我在這裏可以提供的。我能說的最好的就是我的回答說:「做一些與mootName這裏」,那就是你需要編寫一些代碼來mootName'的'值插入到DOM在你需要它,我不知道您的預訂頁面上的HTML的結構,所以我不能建議任何如果你能告訴我們什麼喲你的HTML看起來像,我可以給出更具體的建議,但我不能爲你建立HTML頁面。 (對不起!) – 2013-03-28 22:43:05

+0

現在檢查,我已經插入了完整的nose.html代碼。 – picomon 2013-03-29 10:34:01