2014-08-28 28 views
1

在HTML代碼中,我有一個表格標籤:由DOM樹中的子對象覆蓋的JS DOM對象的屬性?

<form id='my_form' action='url.hmtl'> ... </form> 

相應JS對象有一個名爲 '動作' 屬性,該屬性包含字符串 'url.html':

my_form=document.getElementById('my_form'); 
console.log(form.action); 

的上面的代碼顯示:url.hmtl 但是,如果我添加一個子對象,說的輸入時,在表單內,使用id =「動作」:

<form id='my_form' action='url.hmtl'> 
    <input type="hidden" id="action" /> 
</form> 

然後form.action現在日e對應於輸入的JS對象。

我的問題:

  1. 這種行爲是正常的嗎?
  2. 我是否應該禁止自己使用字符串'action'作爲任何輸入的id?
  3. 如果存在這樣的輸入,是否有任何方法可以獲取表單的原始屬性「Action」,或者永久丟失?

回答

0

這是一個默認行爲,每當你做這樣的事時都會發生。您可以使用getAttribute()函數來獲取屬性。

my_form=document.getElementById('my_form'); 
console.log(form.getAttribute("action"); 
1

表單屬性「action」未被覆蓋。見Florian的例子。

問題是,如果在將表單發送到「操作」地址時遇到問題? 的URL可能會導致不必要的結果的錯誤(由錯字,而不是「url.html」

「url.hmtl」引發回答您的問題:

  1. 的行爲是正常的,但也許是困惑因爲如果你通過id對元素進行尋址或獲取屬性的值,它會有所不同
  2. 只要你對你感興趣的信息足夠具體,就不需要避免使用「action」作爲id。屬性或輸入元素)
  3. 表單屬性操作不會因Flo正確回答而丟失rian :-)
2

此舉是否正常?

Yes, unfortunately

我是否應該禁止使用字符串'action'作爲任何輸入的id?

是的,那一個and many more

如果有這樣的輸入,是否有任何方法來獲取表單的原始屬性'行動'或永遠丟失?

該屬性仍然在DOM中,當您刪除輸入時,action屬性將再次表示該屬性的值。在此之前,您可以使用表單元素的getAttribute method