[js] getElementById doet vreemd

Pagina: 1
Acties:

  • whitehouse
  • Registratie: Maart 2000
  • Laatst online: 25-08 22:31
heb de volgende code :
code:
1
2
3
4
5
6
7
8
9
<script language="JavaScript1.4">
if (screen.width > 801) {
document.getElementById('screen').value= screen.width;
}

</script>
<form name="form1" method="post" action="">
  <input type="hidden" id="screen" value="screen">
</form>


als ik dit uitvoer, moet het document bij het laden, de value van het hidden "screen-object" toch wijzigen in screen.width ? (in mijn geval value="1024") ??

Verwijderd

Stop het in een functie en roep die onload in je body aan.

Verwijderd

Neem eerst een id die je niet kunt verwarren met andere al bestaande properties. IE vindt het ook leuk om van elementen met een id, een globale referentie te maken naar dat object, en die referentie heeft dezelfde naam als het ID. In dit geval dus screen, een erg ongelukkige combinatie, zoals je begrijpt.

Die functie kun je inderdaad pas aanroepen nadat het object met dat id gemaakt is.
Maar wat voor nut heeft het om een onzichtbaar element een breedte mee te geven :?

  • whitehouse
  • Registratie: Maart 2000
  • Laatst online: 25-08 22:31
nog niet .. heb het volgende :
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<html>
<script language="JavaScript1.2" type="text/javascript">
function sw()
{
    if (screen.width > 801)
    {
        document.getElementById('screen').value= screen.width;
    }
}
</script>
<body onLoad="sw()">
<form action="" method="post" name="form1" >
  <input name="screen" type="hidden" id="screen" value="none">
</form>
</body></html>

  • whitehouse
  • Registratie: Maart 2000
  • Laatst online: 25-08 22:31
het nut : dan kan ik de resolutie van de gebruikers gaan posten naar een php script ..

Verwijderd

[nevermind, ik las niet helemaal goed]

In dit geval moet je ook helemaal geen getElementById gebruiken. Het kan wel
hoor, maar dat maakt je code niet erg veel duidelijker.

code:
1
document.forms['form1'].elements['screenwidth'].value = .....

Geef je element in ieder geval een andere naam dan screen.

  • whitehouse
  • Registratie: Maart 2000
  • Laatst online: 25-08 22:31
is er dan een slimmere manier om de resolutie van een gebruiker te posten naar een php script ? (wil dit registreren in een db)

  • whitehouse
  • Registratie: Maart 2000
  • Laatst online: 25-08 22:31
heb nu dit .. het werkt nog niet ..
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<html>
<script language="JavaScript1.2" type="text/javascript">
function sw()
{
    if (screen.width > 801)
    {
        document.forms['form1'].elements['screenwidth'].value = screen.width;

    }
}
</script>
<body onLoad="sw()">
<form action="" method="post" name="form1" >
  <input name="screenwidth" type="hidden" id="screenwidth" value="nix">
</form>
</body></html>

Verwijderd

Hoe weet je of het niet werkt? Krijg je javascript errors? Wanneer submit je dat formulier dan? En waarheen, want je hebt geen action.

  • whitehouse
  • Registratie: Maart 2000
  • Laatst online: 25-08 22:31
als ik in de bron code kijk, moet de waarde van mijn hidden input toch de screen.width zijn ?

Verwijderd

In je broncode verandert er echt niets meer hoor, zodra de pagina geladen is. Je krijgt een document binnen, en die laat de browser zien als broncode. In het geheugen kunnen er via het DOM model allerlei wijzigingen plaatsvinden, maar 'view source' blijft de originele broncode weergeven. :)

  • maikel
  • Registratie: Januari 2001
  • Laatst online: 28-08 13:52
Geef je form eens een ID ipv een 'name'. ID's werken over het algemeen beter dan 'names' en zijn tevens uniek (horen ze tenminste te zijn) zodat er ook geen verwarring ontstaat over welk element het precies is.

Ikzelf zou het zo doen:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<html>
    <head>
        <script language="JavaScript1.2" type="text/javascript">
            function sw()
            {
                if (screen.width > 801)
                {
                    document.getElementById("screenwidth").value = screen.width;
                }
            }
        </script>
    </head>
    <body onLoad="sw()">
        <form action="" method="post" id="form1" >
            <input type="hidden" id="screenwidth">
        </form>
    </body>
</html>

  • whitehouse
  • Registratie: Maart 2000
  • Laatst online: 25-08 22:31
hij doet het , bedankt !!
is er ook een soort van screen.widthandheight ?? dus 1 die de resolutie in 1 keer op vraagt ??

waar hoort dit (.screen) trouwens onder ? DOM ?

  • maikel
  • Registratie: Januari 2001
  • Laatst online: 28-08 13:52
Volgens mij is die er niet. Maar je kunt dan toch gewoon iets doen in de trand van: screen.width + "x" + screen.height, dan krijg je dus bijv. 1024x768. Maar daar kun je verder niet zoveel mee zonder dat elke keer weer te moeten 'ontleden', dus ik zou niet weten waarom je dat zo zou willen.
Pagina: 1