Element met stijl display:none wordt niet gevonden in IE7

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Full Stack Developer Industriële Automatiseri

Raster wordt continu betrokken bij complexe en baanbrekende projecten in industriële automatisering. Ons team is gespecialiseerd in productie automatisering en proces automatisering projecten waarin procesveiligheid een belangrijk aspect is. Ons compact en groeiend OX (Operational Excellence) team ontwikkelt, configureert en levert support op zelfontwikkelde applicaties waarmee onze klanten hun productieprocessen slimmer, sneller, goedkoper en veiliger maken. Operational Excellence wordt zichtbaar gemaakt in resultaten. Bij bedrijven met dezelfde strategie, zal een operationeel excellent bedrijf een lager operationeel risico, lagere operationele kosten hebben en relatief meer winst maken. Het Raster OX team laat haar klanten de resultaten behalen door hun eigen procesdata

Bekijk vacature »

Mark Hogeveen

Mark Hogeveen

31/05/2013 22:23:50
Quote Anchor link
Hallo, ik moet een pagina zodanig maken dat hij ook nog werkt in oudere versies vanaf IE7 en lager. Dat is een vervelend klusje. Nu heb ik een div met css stijl display:none en deze kan zichtbaar of onzichtbaar worden gemaakt met javascript.
Het probleem is dus dat deze div in oudere versies van IE niet wordt gevonden, omdat de regel geldt dat elementen met display:none niet bij de HTML horen. Het element wordt dus gezien als iets dat niet bestaat.
Ik heb dus ergens in mijn javascript dit staan:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
// Element ophalen (voorbeeld)
div = document.getElementById("div");

De foutmelding die wordt gegeven is dat het element dus niet bestaat.
Hoe kan ik dus toch dit element krijgen en er de stijl van aanpassen?
 
PHP hulp

PHP hulp

03/12/2021 09:01:00
 
Frank Nietbelangrijk

Frank Nietbelangrijk

01/06/2013 08:48:49
Quote Anchor link
al is ie7 en lager echt uit de tijd, ik kan me niet zo goed voorstellen dat een hidden div niet gevonden wordt. Ik kan hier niets testen omdat ik de browser niet heb, maar ik kan wel enkele mogelijkheden noemen waardoor het ook mis zou kunnen gaan.

- wees er zeker van dat je elke id-naam maar één keer aan een element toewijst.
- wees er zeker van dat je HTML correct is. haal je pagina dus eens door de w3c validator: http://validator.w3.org/
- getElementById moet je gebruiken NADAT je pagina geladen is. je kunt dat bereiken door getElementById in de onderstaande functie te plaatsen.
- indien een element dynamisch geladen wordt (AJAX) zul je telkens opnieuw moeten binden door getElementById opnieuw aan te roepen
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
window.onload = function () {
    // do stuff here
}
Gewijzigd op 01/06/2013 08:53:52 door Frank Nietbelangrijk
 
Wouter J

Wouter J

01/06/2013 14:10:48
Quote Anchor link
Quote:
omdat de regel geldt dat elementen met display:none niet bij de HTML horen.

Oh? De HTML wordt door de browser omgezet in een DOM tree, dat is het geen je met Java
Script doorzoekt. Wat er uit eindelijk op het scherm komt is een samenvoeging van de DOM tree en de Styles
Struct, dit noem je painten. Elk element staat in de DOM tree, dus deze quote is pure onzin.

Zomaar een idee, bedoel je niet document.getElementsByTagName('div')?

Frank:
indien een element dynamisch geladen wordt (AJAX) zul je telkens opnieuw moeten binden door getElementById opnieuw aan te roepen

Dit is niet waar voor de getElement(s)By* functies. Deze geven namelijk een live dom node list terug, dat betekend dat ie update als er nieuwe elements in komen. De nieuwe functies voor selecteren van elementen, querySelector(All), geeft alleen een dom node list terug. Hiervoor geldt dit probleem dus wel.
 
Mark Hogeveen

Mark Hogeveen

01/06/2013 15:08:03
Quote Anchor link
Maar wat is nu de oplossing Wouter?
 
Wouter J

Wouter J

01/06/2013 15:10:25
Quote Anchor link
daarvoor weten we te weinig, frank heeft een aardig mooi lijstje gemaakt en ik heb er nog 1tje bij gestopt. Tijd om Inspecteur Hogeveen z'n werk te laten doen en te beslissen waar de fout ligt :)
 
Jan terhuijzen

jan terhuijzen

01/06/2013 15:38:20
Quote Anchor link
:P
Gewijzigd op 01/06/2013 15:39:10 door jan terhuijzen
 
Frank Conijn

Frank Conijn

01/06/2013 17:47:00
Quote Anchor link
Harry hogeveen op 31/05/2013 22:23:50:
oudere versies vanaf IE7 en lager

Dat is een contradictio in terminis. Of moet het werken in IE7, 6 en 5? Maar wat is daar het nut van dan? IE7 wordt al nauwelijks meer gebruikt.

Verder moet je even de hele pagina posten, ontdaan van irrelevante zaken. Want het kan inderdaad aan een scala van zaken liggen.
Gewijzigd op 01/06/2013 17:51:33 door Frank Conijn
 
J van G

J van G

01/06/2013 18:22:39
Quote Anchor link
Mogelijk heb je een JavaScript fout op je pagina? Heb je al gekeken in het "Ontwikkelaars hulpprogramma" van IE? Dit tover je tevoorschijn met de knop F12, misschien dat je hier iets van opsteekt.
 
Mark Hogeveen

Mark Hogeveen

02/06/2013 18:52:01
Quote Anchor link
Ja, ik heb het al opgelost. Ik zal je zeggen wat het probleem was. Geloof het of niet!
De naam van de variabele waar ik het inzette was het probleem.
Dit stukje was dus niet goed:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
overlay = document.getElementById("overlay");

Het gaf de error: Deze eigenschap of methode wordt niet ondersteund door dit object
Ik heb na veel proberen de naam van de variabele veranderd:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
overligger = document.getElementById("overlay");

En de fout is weg.
Ik weet zeker dat het nergens anders aan lag. Er stond al heel weinig javascript op die pagina.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.