URL: https://www.overclockers.at/coding-stuff/sauberes_trennen_von_js-code_zwischen_browsern_135005/page_1 - zur Vollversion wechseln!
ich code gerade für die schule an einem rätselscript (zahl raten).
script schaut so aus:
Code: PHP<html> <head> <title>Raten</title> <style type="text/css"> body, td{ font-size: 10pt; font-family: Arial; } td.border{ border: 2px solid #000000; } .button{ border-top: 1px solid #cccccc; border-right: 1px solid #000000; border-bottom: 1px solid #000000; border-left: 1px solid #cccccc; background-color: #ffffff; } </style> <script type="text/javascript"> a = Math.round((Math.random()*100)); b = 0; function rate(){ var zahl = document.getElementsByName('feld')[0].value; if(zahl.length != 0){ b++; if(document.getElementById || document.layers){ if(zahl == a){ document.getElementById('answer').style.backgroundColor = "green"; document.getElementById('answer').style.color = "white"; document.getElementById('answer').style.fontWeight = "bold"; document.getElementById('answer').firstChild.nodeValue = "Richtig!"; document.getElementById('button').disabled = true; }else if(zahl < a ){ document.getElementById('answer').firstChild.nodeValue = "Die Zahl ist höher"; }else{ document.getElementById('answer').firstChild.nodeValue = "Die Zahl ist niedriger"; } document.getElementById('versuche').firstChild.nodeValue = "<b>Anzahl der Versuche:</b> " + b + a; } if(document.all){ if(zahl == a){ document.getElementById('answer').style.backgroundColor = "green"; document.getElementById('answer').style.color = "white"; document.getElementById('answer').style.fontWeight = "bold"; document.getElementById('answer').innerText = "Richtig!"; document.getElementById('button').disabled = true; //highscore(b); }else if(zahl < a ){ document.getElementById('answer').innerText = "Die Zahl ist höher"; }else{ document.getElementById('answer').innerText = "Die Zahl ist niedriger"; } document.getElementById('versuche').innerHTML = "<b>Anzahl der Versuche:</b> " + b + a; } } } /* function show_highscore(){ if(!document.cookie) else return document.cookie; } function edit_highscore(score){ if(!document.cookie) document.cookie = score; else if(document.cookie > score) document.cookie = score; } */ </script> </head> <body> <table align="center" width="200px"> <tr> <td id="versuche" colspan="2" class="border"> <b>Anzahl der Versuche:</b> 0 </td> </tr> <tr> <td id="highscore" colspan="2" class="border"> <b>Dein persönlicher Highscore:</b> - </td> </tr> <tr> <td id="answer" colspan="2" style="text-align: center" class="border"> Richtig? </td> </tr> <tr> <td> <input type="text" name="feld" maxlength="3" onkeyup="if(document.getElementsByName('feld')[0].value > 100) document.all.feld.value = 100"> </td> <td> <input type="button" id="button" value="Raten" onclick="rate()" class="button"> </td> </tr> </table> </body> </html>
document.getElementById sollte inzwischen jeder Browser können. Auch nodeValue ist in DOM-1 definiert, allerdings readonly. Sowohl IE als auch Gecko verstehen jedenfalls innerHTML.
IE und NS Variablen würde ich nicht machen, eher z.B. eine eigene setNodeValue Funktion, die je nach Browser das richtige tut.
Jede Browserabfrage im normalen Code (d.h. nicht in Funktionen eingepackt) ist IMHO ein Zeichen für schlechtes Design.
Zitat von thatJede Browserabfrage im normalen Code (d.h. nicht in Funktionen eingepackt) ist IMHO ein Zeichen für schlechtes Design.
Wozu onLoad? Einfach im Script vorher definieren die Funktion, dann bei Bedarf aufrufen.
Aber warum verwendest du statt der Krücken nicht einfach das (nicht standardkonforme, aber weit verbreitete) innerHTML Property?
vor allem du als nicht ms-benutzer solltest das wissen, weil ich nehm kaum an, dass du den ie verwendest....
klartext: firefox verstehts nicht
Zitat von tomstigvor allem du als nicht ms-benutzer solltest das wissen, weil ich nehm kaum an, dass du den ie verwendest....
klartext: firefox verstehts nicht
Code: PHP<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <title>innerHTML Test</title> </head> <body> <div id="test">Test</div> <p> <a href="#" onclick="document.getElementById('test').innerHTML = '<b>Hallo</b>'; return false;">Click me</a> </p> </body> </html>
aha, strange, sry...
ist vorher nicht gegangen, lag wohl der fehler woanders...
aber trotzdem wäre es interessant zu wissen, wie man das saubere trennen am besten aufbauen kann...
edit: bin jetzt draufgekommen: innerHTML geht, innerText nicht...
Zitat von tomstigaber trotzdem wäre es interessant zu wissen, wie man das saubere trennen am besten aufbauen kann...
und genau diese gekapselten codeschnipsel schreibst du in "conditional comments".
Zitat von watchoutund genau diese gekapselten codeschnipsel schreibst du in "conditional comments".
Code:<!--[if IE]> Achtung, Sie verwenden einen nicht standardkonformen Browser! <a href="http://getfirefox.com">Get Firefox now!</a> <![endif]-->
hehe, die muss ich noch einbauen ^^
mhh, für alles eine eigene funktion klingt nach viel aufwand :/
Nicht wirklich. Es sind nicht viele, und die brauchst nicht nochmal fuer spaeter schreiben. Und brauchen wirst sie immer wieder
overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2025