22. august 2005 - 23:21Der er
8 kommentarer og 2 løsninger
Et IE/FF DOM problem
Har lavet denne funktion:
<script language="javascript"> function instant_edit_list(elm, something) { var elm_array = elm.parentNode.getElementsByTagName('td');//Array of elements tagged td inside parentNode
for (i = 0; i < elm_array.length; i++) { var current_value = elm_array.item(i).innerHTML; elm_array.item(i).innerHTML = ''; var input = document.createElement('input'); input.setAttribute('type','text'); input.setAttribute('value',current_value); input.setAttribute('class','input');/*Mozilla gets this*/ input.setAttribute('className','input');/*IE gets this*/ elm_array.item(i).appendChild(input); input.focus(); } } </script>
Kan nogen fortælle mig hvorfor det overhovedet ikke virker i IE, mens det i FF virker, bortset fra at hvis der er flere 'table' elementer, bliver alle 'td' til inputs.
Hos Computerworld it-jobbank er vi stolte af at fortsætte det gode partnerskab med folkene bag IT-DAY – efter vores mening Danmarks bedste karrieremesse for unge og erfarne it-kandidater.
Nogle eksperter her på sitet er blevet hørt sige ting som at man lægger op til øretæver hvis man placerer tags i en table men undenfor td-elementerne. Jeg vil umiddelbart tro at det kan have noget med det at gøre.
Du kan evt. lægge en div omkring tabellen og så rykke din <h2> og <a>-tags udenfor tabellen men stadig inde i div-tag'et. Mon så ikke din funktion så stadig ville fungere...
Sikkert fordi de eneste slags elementer, der kan være children til en table er tbody, thead og tfoot-elementer, som så kun kan indeholde tr-elementer, som kun kan indeholde th og td-elementer ...
-- så dine hx-tags og a-tags er simpelthen ulovligt nestet ...
Du kan prøve denne, den virker umiddelbart i alle mine browsere:
<script language="javascript"> function instant_edit_list(elm, something) { var par = elm; while(par.tagName.toLowerCase() != "table") par = par.parentNode; var elm_array = par.getElementsByTagName('td');//Array of elements tagged td inside parentNode
for (i = 0; elm_array.length > i; i++) { var current_value = elm_array[i].innerHTML; elm_array[i].innerHTML = ''; var newInp = document.createElement('input'); newInp.setAttribute('type','text'); newInp.setAttribute('value',current_value); newInp.setAttribute('class','input');/*Mozilla gets this*/ newInp.setAttribute('className','input');/*IE gets this*/ elm_array[i].appendChild(newInp); newInp.focus(); } } </script>
Jeg skulle lige til at sige at flg. fungerer i både IE 6.0 og FF:
<html> <head> <title></title> <script language="javascript"> function instant_edit_list(elm, something) { var elm_array = elm.parentNode.getElementsByTagName('td');//Array of elements tagged td inside parentNode
for (i = 0; i < elm_array.length; i++) { var current_value = elm_array.item(i).innerHTML; elm_array.item(i).innerHTML = ''; var input = document.createElement('input'); input.setAttribute('type','text'); input.setAttribute('value',current_value); input.setAttribute('class','input');/*Mozilla gets this*/ input.setAttribute('className','input');/*IE gets this*/ elm_array.item(i).appendChild(input); input.focus(); } } </script>
<script type="text/javascript"> function instant_edit_list(elm, something) { var par = elm; while(par.tagName.toLowerCase() != "table") par = par.parentNode; var elm_array = par.getElementsByTagName('td');//Array of elements tagged td inside parentNode
for (i = 0; elm_array.length > i; i++) { var current_value = elm_array[i].innerHTML; elm_array[i].innerHTML = ''; var newInp = document.createElement('input'); newInp.type = 'text'; newInp.value = current_value; newInp.className = 'input'; elm_array[i].appendChild(newInp); newInp.focus(); } } </script>
Arhh, smukt - Jamen jeg må lige give mig selv en over næsen for det med ulovligt nestede elementer. Det burde jeg vel efterhånden kunne have sagt mig selv.
Jeg syntes at i begge bidrager til svaret, hvorfor det nok er mest rimeligt at i deler point - Smid begge et svar!
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.