mi aspetto che il seguente codice per avvisare "out"this.nextSibling non funziona
<input type=text onfocus="alert(this.nextSibling.id)" />
<output id="out">this is output</output>
Ma avvisi indefinito PERCHE '?
mi aspetto che il seguente codice per avvisare "out"this.nextSibling non funziona
<input type=text onfocus="alert(this.nextSibling.id)" />
<output id="out">this is output</output>
Ma avvisi indefinito PERCHE '?
nextSibling
seleziona il nodo fratello successivo dell'elemento. Il nodo successivo può anche essere un textNode
che non ha una proprietà id
, quindi si ottiene il valore undefined
. Come suggerito dall'altra risposta, è possibile utilizzare la proprietà nextElementSibling
che fa riferimento al nodo fratello successivo che ha nodeType
di 1
(ovvero un oggetto Elemento) o rimuovere i caratteri nascosti tra gli elementi.
Si noti che IE8 non supporta la proprietà nextElementSibling
.
Prova questo:
alert(this.nextElementSibling.id);
NOTA: Il nextSibling
proprietà restituisce il nodo immediatamente seguente il nodo specificato, allo stesso livello dell'albero.
La proprietà read-only nextElementSibling
restituisce l'elemento immediatamente successivo a quello specificato nell'elenco figli del genitore, oppure null se l'elemento specificato è l'ultimo nell'elenco.
grazie tizio ero molto weired circa l'uscita indefinita –
Partendo dal presupposto che è possibile utilizzare
jQuery
Nota che this.nextSibling
might not work in IE specifically
Il jQuery
alternativa per this.nextSibling
è $(this).next()
Perché dovresti pubblicare una risposta jQuery a una domanda che richiede esplicitamente una risposta JavaScript e, da nessuna parte, suggerisce che jQuery sia in uso o sia un'opzione? Soprattutto dopo diciotto mesi (mentre scrivo questo)? –
@DavidThomas, sono completamente d'accordo, so che è vecchio ma odio quando faccio domande su JavaScript e qualcuno suggerisce una libreria prefabbricata, voglio dire come possiamo imparare JavaScript se siamo pigri e usiamo gli script già fatti ogni volta, possiamo suggerire ad altri di usare jQuery se non vogliono imparare il vero javascript. –
ma nella mia codice non ci sono nodi tra l'elemento inout e output e non vedo i caratteri nascosti ant –
@moroccan_dev Si prega di controllare questo violino e aprire la console per vedere il nodo registrato. http://jsfiddle.net/khcxjta5/ – undefined
@moroccan_dev i caratteri nascosti sono qualcosa che non puoi vedere dal momento che sono nascosti. In questo caso, sono i personaggi di nuova riga. – cychoi