Ho due funzioni JS, uno che è l'aggiunta di opzioni per una casella di selezioneCome reimpostare la posizione di scorrimento della pagina dopo la manipolazione del DOM?
function addOption(selectId, text, value) {
var selectbox = document.getElementById(selectId);
var optNew = document.createElement('option');
optNew.text = text;
optNew.value = value;
try {
selectbox.add(optNew, null); //page position resets after this
}
catch(ex) {
selectbox.add(optNew);
}
}
e un altro che sta facendo un document.getElementById (formid) .appendChild (newHiddenInput) in una funzione altrettanto semplice.
Entrambi funzionano, gli elementi vengono aggiunti come previsto. Tuttavia, richiamando uno di essi, la pagina riporta la sua posizione di scorrimento all'inizio della pagina sia in IE6 che in FF. Non c'è alcun postback, questa è puramente la manipolazione clientide. Ho impostato i breakpoint in Firebug e si verifica immediatamente dopo l'elemento element.appendChild o select.add viene eseguito. So che posso usare JS per impostare manualmente una posizione di scorrimento, ma non pensavo fosse necessario quando la pagina non è stata rieseguita.
Non sono esperto di JS o DOM, quindi potrei stare perdendo qualcosa, ma ho cercato here e ho analizzato i loro esempi con le opzioni Try it Here e non riesco a replicare il problema, indicando il codice base con cui sto lavorando è il colpevole.
Eventuali motivi per cui la posizione di scorrimento viene ripristinata? jQuery è disponibile anche a me, se fornisce un'alternativa migliore.
Grazie! Le funzioni venivano chiamate dai stili "pulsanti". Li ho passati a tag di espansione e questo ha risolto il problema. –
Questa non è (necessariamente) la soluzione, ma potrebbe essere nel tuo caso. Per riferimento futuro, quando si utilizza un tag di ancoraggio, in genere si desidera un href valido in esso, ma potrebbe non voler farlo andare ovunque mentre si sta anticipando il comportamento con javascript. Questo è quando devi usare "return: false;" –
Sì. Questo è quello che ha fatto per me. Ora mi sento sciocca. – dooleyo