2013-08-07 14 views
8

Ho una forma codificata comeUn input in un modulo denominato 'action' sovrascrive la proprietà dell'azione del modulo. è un insetto?

<form class="form1" method="post" action="form1.php" style="width:405px"> 

Ordinariamente, ho potuto accedere l'azione della forma in JavaScript facendo riferimento alla .action dell'oggetto forma, ad esempio

document.forms[0].action 

che ritorno il valore

form1.php 

Tuttavia, se devo, come componente della forma, una voce denominata "azione", questa "azione" diventa il contenuto dell'azione della forma. Cioè, se la forma markup contiene, ad esempio,

<input name="action" type="hidden" value="check" /> 

Poi

document.forms[0].action 

restituisce il valore

<input name="action" type="hidden" value="check" /> 

Ora, ho lavorato come ottenere intorno a questo: da utilizzando

document.forms[0].getAttribute("action") 

Tuttavia, è un brutto scherzo che mi ha confuso per troppo tempo. è un insetto? Un trucco noto della gestione DOM? O dovrei prendere l'abitudine di usare .getAttribute()?

+1

Non è un bug, il browser emula [comportamento IE] (http://stackoverflow.com/q/1378155/1048572) che ha iniziato lo stile 'form [elementname]' - corretto sarebbe 'form.elements [nome elemento] '. Tuttavia mi aspettavo che l'attributo offuscasse l'input ... – Bergi

risposta

4

Non definirei un bug. Questo effetto si verifica perché gli attributi possono essere letti utilizzando element.attributename e gli input con nome all'interno di un modulo sono accessibili allo stesso modo, formelement.inputname. Se c'è un attributo e un input con lo stesso nome, non vi è alcuna garanzia che verrà utilizzato. Probabilmente si comporta in modo diverso nei vari browser.

Io personalmente uso getAttribute se sto leggendo un attributo noto incluso nel markup o aggiunto utilizzando setAttribute in JavaScript. Per valori dinamici come, ad esempio, l'attributo checked di una casella di controllo, non utilizzo getAttribute. Ma questa è più una questione di preferenze personali, immagino.

+2

Una differenza quando si utilizza 'getAttribute' è che, a differenza della proprietà' action', può restituire URL relativi. – EricLaw

Problemi correlati