Avatar billede l3kris Nybegynder
03. juni 2007 - 09:52 Der er 14 kommentarer og
1 løsning

innerHTML virker ikke

Jeg har denne javascript funktion:

function anslag(text)
{
  var rest_len=400-text.value.length;
  var rest_text = 'Resterende antal anslag: '+rest_len;
  window.document.getElemenById('rest').innerHTML= rest_text;
  return false ;
}

og selvfølgelig denne i body:

<input name="besked" type="text" id="besked" size="80" maxlength="400" disabled="disabled" onkeyup="anslag(this);" />
<div style="float:right" id="rest">Max antal anslag: 400</div>

Ideen er selvfølgelig, at efterhånden som man skriver sin besked, får man at vide, hvor mange anslag, der er tilbage. Men det virker ikke.

Ideer?
Avatar billede softspot Forsker
03. juni 2007 - 09:56 #1
Prøv at undlade at finde document på window-objektet. Skriv i stedet:

  document.getElemenById('rest').innerHTML = rest_text;
Avatar billede l3kris Nybegynder
03. juni 2007 - 10:06 #2
Det gør ingen forskel.

IE7 siger, at "et objekt var ventet".
Avatar billede erikjacobsen Ekspert
03. juni 2007 - 10:12 #3
Muuuligvis er "getElemenById" stavet lidt forkert ...
Avatar billede softspot Forsker
03. juni 2007 - 10:15 #4
Damn! Og jeg synes ellers lige jeg checkede inden jeg postede... men altså ikke for stavefejl i getElementById :D
Avatar billede l3kris Nybegynder
03. juni 2007 - 11:20 #5
ja, man skulle have troet, at det ville fået det til at virke - men det virker stadig ikke...
Avatar billede l3kris Nybegynder
03. juni 2007 - 12:05 #6
function anslag(text)
{
    var rest_len=400-text.value.length;
    var rest_text = 'Resterende antal anslag: '+rest_len;
    var el=window.document.getElementById('rest');
    el.innerHTML= rest_text;
    return(fase) ;
}

Jeg aner ikke, hvorfor man ikke kan referere direkte til den, men der skal åbenbart en indirekte reference til, før det virker...

Men Erik, du får halvdelen, da den jo nok ikke havde virket med stavefejlen alligevel :)
Avatar billede erikjacobsen Ekspert
03. juni 2007 - 12:22 #7
Virker den ikke?  http://n0p.com/781451.php
Avatar billede roenving Novice
03. juni 2007 - 12:28 #8
Man kan så tilføje, at det er et under, at det virker ens i alle browsere, da innerHTML aldrig har været en del af en standard, og faktisk burde man:

function anslag(text){
  var rest_len=400-text.value.length;
  var rest_text = 'Resterende antal anslag: '+rest_len;
  window.document.getElemenById('rest').firstChild.nodeValue = rest_text;
  return false ;
}
Avatar billede l3kris Nybegynder
03. juni 2007 - 12:41 #9
Erik: Virkelig mærkeligt! Men den vil altså ikke i min... Til gengæld virker den som skrevet ovenfor. Vil du lige lægge et svar?
roenving: Ja, det er også en mulighed, men nu har jeg fået den til at virke, så...
Avatar billede roenving Novice
03. juni 2007 - 12:59 #10
Fordelen ved min udgave er, at også standarderne anbefaler den !-)

-- og så burde den også virke i ægte xhtml, hvilket den anden ikke vil !o]
Avatar billede l3kris Nybegynder
03. juni 2007 - 13:05 #11
Jeg har lige afprøvet den, roenving, og den virker faktisk heller ikke. Jeg ved ikke, hvad der gør mit dokument så specielt (kan være DTD'en), men jeg holder mig til den løsning, der virker :)
Avatar billede roenving Novice
03. juni 2007 - 13:23 #12
Hrm, havde lige glemt tavetossen i .getElementById samt din disabled i html-koden i spørgsmålet, så den virker som forventet ganske glimrende !o]

-- og da du faktisk skriver xhtml-agtig kode vil det vel være vanvittigt at skrive noget kode, der notorisk ikke vil virke (faktisk vil den få en xml-baseret fortolker til at gå ned med et hult drøn !-), hvis browseren faktisk tog det alvorligt ?-)
Avatar billede erikjacobsen Ekspert
03. juni 2007 - 13:25 #13
Nej tak, jeg samler slet ikke på point. (Men du kan komme og slå min græsplæne til gengæld, haha)
Avatar billede l3kris Nybegynder
03. juni 2007 - 13:35 #14
hehe, sådan en lille forglemmelse kan forfølge en i lang tid (der er heller ikke nogen, der har påpeget 'return fase' ovenfor :D

Anyway, nu virker den både i "din" og "min" version. Da jeg ved, hvem og hvordan den skal bruges, har det ingen praktisk betydning, hvilken det bliver. Men tak for ideerne, som jeg efterlyste :)
Avatar billede olebole Juniormester
04. juni 2007 - 13:04 #15
<ole>

Jo, det har da pokkers til betydning, om du bruger DOM eller innerHTML!

innerHTML har aldrig været valid i nogen somhelst standard - og bliver det med garanti heller aldrig. Den er i visse browsere (Firefox) upålidelig - og man skyder ofte sig selv i foden, når man bruger den (den overskriver et dokument-fragment og bryder derfor alle programmatiske referencer i fragmentet).

innerHTML var en udmærket ting i forrige årtusinde - men i dette har vi fået langt bedre metoder til manipulation af dokumentets indhold

/mvh
</bole>
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester

IT-JOB