Salve a tutti,
cercando di realizzare una funzione javascript per scambiare i valori di due campi input successivi ho realizzato questa funzione
function upBiografia(campo){
var fratello= campo.parentNode.previousSibling;
if(null != fratello) {
var tmp= fratello.firstChild.value;
fratello.firstChild.value= campo.parentNode.firstChild.value;
campo.parentNode.firstChild.value= tmp;
}
}
che effettivamente funziona ma solo sugli elementi creati attraverso javascript con quest'altra funzione
function addBiografia(id){
campi = document.createElement('div');
document.getElementById(id).appendChild(campi);
campi.innerHTML="<input class=\"tappabiografica\" name=\"tappabiografica[]\" type=\"text\" value=\"\"><a class=\"biosu\" href=\"#\" title=\"Sposta su\" onclick=\"upBiografia(this); return false;\"></a><a class=\"biogiu\" href=\"#\" title=\"Sposta giù\"></a><a class=\"biodel\" href=\"#\" title=\"Elimina\"></a><div class=\"clear\">";
window.scrollBy(0,50);
}
mentre non mi riconosce il campo iniziale che io ho inserito a mano
<div>
<input class="tappabiografica" name="tappabiografica[]" value="" type="text"><div class="clear"></div>
</div>
Posso ovviamente realizzare la funzione in altri modi, tuttavia mi sembra strano che non vengano riconosciuti quei nodi non creati via javascript. L'errore che mi dà la console è:
Errore: fratello.firstChild is null