webForumDet fria alternativet

Fördröjning?

1 svar · 294 visningar · startad av jabbalizer

jabbalizerMedlem sedan jan. 2001229 inlägg
#1

Jag har en lång tabell med bara text.
När man klickar på en knapp (finns en på varje rad) så sätts innerHTML till en <input>, och denna blir editerbar.

document.getElementById("td_day_"+pg_id).innerHTML = "<input type='text' id='day_limit'...

lite senare i samma skript så vill jag se till att den nya inputen har fokus så att man kan börja skriva där direkt, så jag använder:

document.getElementById("td_day_"+pg_id).childNodes(0).select();

Problemet är följande:
När jag först klickar så fungerar det. Rutan får fokus.
När jag sen klickar på en annan knapp så fungerar det bara om raden ligger före den senast klickade.
Klickar jag på en rad längre ner så fungerar det alltså inte.

Jag har en lösning på problemet, men jag vill veta varför det blir som det blir. (Och sen är min lösning inte den finaste):

document.getElementById("td_day_"+pg_id).childNodes(0).select();
document.getElementById("td_day_"+pg_id).childNodes(0).select();

Om man kör selecten två gånger så funkar det perfekt.

btw: webbläsare = IE 7

TroxyMedlem sedan mars 20041 505 inlägg
#2

Jag har för mig att IE är väldigt dum just vad gäller javascript-skapade formulär.
Nu kanske jag är helt fel ute, men testa att skapa input-rutan med DOM-scripting istället:

var inputElement = document.createElement('input');
inputElement.setAttribute('type','text');
inputElement.setAttribute('id','day_limit');
inputElement.setAttribute('name','day_limit');
document.getElementById("td_day_"+pg_id).appendChild(inputElement);
241 ms totalt · 3 externa anrop · v20260731065814-full.cf67ef55
0 ms — hämta forumlista (cache)
118 ms — hämta statistik (db)
121 ms — hämta tråd, inlägg och bilagor (db)