2011-08-23 164 views
1

我一直在嘗試使用setAttribute將選擇標記的名稱從oldName更改爲newName,但是當我加載頁面然後查看源代碼時,oldName仍然存在。最終,我想添加一個屬性「onchange」,「function();」但我甚至無法讓JS更改標籤的名稱。任何幫助,將不勝感激。提前致謝。我在Mac OS X上測試了這一點:Chrome,FF和Safari。JavaScript setAttribute不起作用

<html> 
<head> 
</head> 
<body> 
     <select name="oldName"> 
     <option value="0">Essay 1</option> 
     <option value="1">Essay 2</option> 
     <option value="2">Essay 3</option> 
     </select> 
<script type="text/javascript"> 
document.getElementsByTagName("select").item(0).setAttribute("name","newName"); 
</script> 
</body> 
</html> 
+2

源不會更改,所有js更改都是在DOM表示上完成的。測試更改使用螢火蟲或鉻開發工具 – Einacio

+0

在我的鉻13工作正常。[演示](http://jsfiddle.net/CJjYH/) –

回答

-3

爲什麼你不使用類呢?像這樣:

<script type="text/javascript"> 
$(function(){ 
    $('.example').attr('name','new'); 
}); 
</script> 


<select class="example" name="oldName"> 
<option value="0">Essay 1</option> 
<option value="1">Essay 2</option> 
<option value="2">Essay 3</option> 
</select> 
+0

這是jQuery,本機DOM元素沒有'.attr' 。另外,將函數結果設置爲某些內容是沒有意義的。 – pimvdb

+0

這看起來像是純JS和jQuery之間的混合體,並且由於沒有jQuery對象,因此您將嘗試調用它的對象不存在「attr」。正如@pimvdb指出的那樣,您不希望將字符串「newName」分配給該函數。 –

+0

同意 - 這是無效的。請確保您的答案在發佈之前包含事實信息 - 謝謝! –

4

您的代碼工作,名稱更改。查看源代碼時,您不會看到名稱更改。請在開發工具中查看生成的源代碼。 (在Chrome中嘗試F12)。

查看源只顯示首次從服務器下載的源。使用開發工具,您可以看到頁面加載後對DOM所做的更改。

+1

謝謝!你是對的。我不知道爲什麼我認爲只查看源代碼會顯示更新的版本。 – Usman

+0

@Usman不客氣:) – Paulpro

0

當您執行「查看源代碼」時,您不會查看該頁面的HTML,因爲它存在於您的面前 - 瀏覽器會專門提取該頁面的副本以顯示源代碼。這樣做時,它不會解釋JavaScript - 因此,通過javascript製作的文檔的任何更改都不會反映在「查看源代碼」窗口中。

爲了查看DOM 的變化,您將不得不使用像Firebug(link)這樣的開發工具。當然,作爲Firefox的擴展意味着在Internet Explorer中沒有運氣,這就是爲什麼開發人員經常將Firefox作爲開發目標並在所有事情都合理運行後擔心Internet Explorer的原因。

在IE中有Firebug的替代工具(如Firebug Lite),但沒有一個接近功能和實用程序。