簡體   English   中英

在javascript中,獲取表格名稱的正確方法是什么?

[英]in javascript do, what is correct way to get FORM name?

在表單中, form.name 通常會返回表單的名稱,但是如果表單中包含名為“ name”的元素,則不會返回

var f = document.createElement('form');
f.hasAttribute('name');                   // false
f.name = 'abc';
f.getAttribute('name');                   // "abc"

var i = document.createElement('input');
i.name = 'name';

f.appendChild(i);
f.name;                                   // HTMLInputItem
f.getAttribute('name')                    // "abc"
f.name = 'efg';
f.name;                                   // HTMLInputItem
f.getAttribute('name')                    // "efg"

通過此練習,似乎FORM的name屬性確實是其屬性。

這種行為與value截然不同

var i1 = document.createElement('input');
var i2 = document.createElement('input');

// test value
i1.setAttribute('value','value1');
i1.getAttribute('value');                  // value1
i1.value = 'value2';
i1.getAttribute('value');                  // value1

i2.value = 'value1';
i2.hasAttribute('value')                   // false

// test name
i.setAttribute('name','name1');
i.getAttribute('name');                   // name1
i.name = 'name2';
i.getAttribute('name');                   // name2

i2.name = 'name1';
i2.hasAttribute('name')                   // true

value使用其屬性作為默認值,而form.name是一種方法,該方法首先嘗試使用具有element.name='name' ,然后使用attribute('name')

關於何時以及如何從DOMElement object訪問那些“特殊屬性”存在困惑。 .name.value.tabIndex等。直接對象訪問來自過去,並且在所有主流瀏覽器中都可以正常工作。 所以基本上沒有錯,通過調用

form.name

但是正如您提到的,如果有命名的子節點,可能會遇到麻煩。 W3C建議始終使用.setAttribute() / .getAttribute()方法。 在這種特殊情況下,它可能是最好的建議。 在其他情況下,我仍然會選擇直接訪問,因為這樣寫起來少得多,對我也很方便。

如果您想獲得表格名稱

var names [] = document.getElementsByTagName('form')。getAttribute('name');

(要么)

var name = document.getElementById('form_id')。getAttribute('name');

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM