Acties:
  • 0 Henk 'm!

  • mpol
  • Registratie: September 2002
  • Laatst online: 15-06 22:26

mpol

root@localhost

Topicstarter
Ik doe vast iets fout, maar heb geen idee wat.

Ik heb een formulier waarvan ik een veld wil invullen met javascript. Dit werkt, maar niet in IE6 en IE7. Nou kan me dat niks schelen, maar het werkt ook niet in IE8 onder Windows 7/Vista, en dat is wat vervelend.

Wat ik doe is de innerHTML uitlezen van een <h2 id=doctitle>, en dat als waarde van een invoerveld <input id=subject> opgeven.

Wat ik als foutmelding in oude IE's krijg is dat deze eigenschap of methode niet wordt ondersteund. En dat gaat dan over de eerste javascript regel.
Ter info, het invoerveld staat op display:none;

Dit is de code:
JavaScript:
1
2
3
4
5
// vul het formulier met het juiste onderwerp
doctitle = document.getElementById("doctitle").innerHTML;

subject = document.getElementById("subject");
subject.value = doctitle; 


Dit is een url van de live site:
http://truckcentrumkampen.nl/daf-xf-de-valk/

Ik ben dus beslist geen javascript guru, en het hele IE gedoe is ook niet heel erg uitnodigend. Ik hoop op wat richting en hulp.

https://timelord.nl


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 00:21

crisp

Devver

Pixelated

Die h2 staat in een div welke nog niet afgesloten is als het stukje script wordt uitgevoerd. IE heeft daar dan nog niet volledig de DOM van opgebouwd en document.getElementById("doctitle") geeft op dat punt dus waarschijnlijk null terug.

Verplaats dit stukje script dus verder naar onder in je pagina, of - aangezien je toch jQuery gebruikt - gebruik de onready handler van jQuery. sowieso als je toch al een library gebruikt, gebruik het dan overal voor

[ Voor 10% gewijzigd door crisp op 22-02-2012 20:46 ]

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 16:28
Wat crisp zegt dus. Waarom niet gewoon jQuery gebruiken als je die toch hebt.

JavaScript:
1
2
3
$(function(){
   $('#subject').val( $('#doctitle').text() );
});

Acties:
  • 0 Henk 'm!

  • mpol
  • Registratie: September 2002
  • Laatst online: 15-06 22:26

mpol

root@localhost

Topicstarter
@crisp: het lag niet aan de div. Dat zou wel leuk zijn als dat het probleem was. Maar verplaatsen gaf nog steeds de foutmelding.

jQuery werkt trouwens wel. Zij zullen vast enorm compatible zijn, dus dat heeft natuurlijk het voordeel.
Bedankt, dat is het voor nu :).

https://timelord.nl


  • ZeroXT
  • Registratie: December 2007
  • Laatst online: 23:46
Nu heb je het probleem omzeilt door gebruik te maken van een lib. Anzich niets mis mee maar niet de oplossing.

Internet Explorer heeft nog wel eens last van variabelen die niet worden aangemaakt met het woord 'var' ervoor. Je zou daar 'var doctitle' moeten neerzetten om dit probleem mogelijk op te lossen.

Mocht dit het niet zijn dan vind ik het alsnog raar om hiervoor een compleet library te gebruiken.

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 16:28
ZeroXT schreef op donderdag 23 februari 2012 @ 11:44:
Nu heb je het probleem omzeilt door gebruik te maken van een lib. Anzich niets mis mee maar niet de oplossing.

Internet Explorer heeft nog wel eens last van variabelen die niet worden aangemaakt met het woord 'var' ervoor. Je zou daar 'var doctitle' moeten neerzetten om dit probleem mogelijk op te lossen.

Mocht dit het niet zijn dan vind ik het alsnog raar om hiervoor een compleet library te gebruiken.
Dat van die variabelen is onzin. Je maakt wel globale variabelen aan op deze manier.

Het probleem zal hier eerder zijn dat je bij oudere IE's formulierelementen niet altijd correct kan aanspreken via getElementById. Voor zover ik weet was dit opgelost in IE7, maar kan het mis hebben.

Maar ondanks dat, de site zit al vol met jQuery-code en plugins, dus er is geen reden hier ineens basis JS te gaan gebruiken.

[ Voor 3% gewijzigd door Bosmonster op 23-02-2012 12:42 ]


  • ZeroXT
  • Registratie: December 2007
  • Laatst online: 23:46
Een goed voorbeeld:

JavaScript:
1
2
3
4
if(doctype = document.getElementsById('test'))
{
     //code voor doctype
}


Dit gaat in alle browers goed. Alleen zijn er situaties wanneer dit in IE7 en 8 niet goed gaat. Hiervoor moet je eerst de de variable declareren dus:

JavaScript:
1
2
3
4
5
6
var doctype;

if(doctype = document.getElementsById('test'))
{
     //code voor doctype
}


Ik meende dat dit hier ook het geval was.

  • mpol
  • Registratie: September 2002
  • Laatst online: 15-06 22:26

mpol

root@localhost

Topicstarter
Ah, was dat alles. Dat had ik moeten weten.

En inderdaad, jQuery zit al in de site, dus dat kan ook gewoon gebruikt worden.

https://timelord.nl


  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 16:28
ZeroXT schreef op donderdag 23 februari 2012 @ 13:22:

Dit gaat in alle browers goed. Alleen zijn er situaties wanneer dit in IE7 en 8 niet goed gaat.
Dan ben ik heel benieuwd naar die situaties :)

(aangezien je voorbeeld gewoon werkt in IE7)

[ Voor 8% gewijzigd door Bosmonster op 23-02-2012 18:04 ]

Pagina: 1