Objekt erwartet, problem noch nicht gelöst....
Sonia
- javascript
0 Ramy0 Jürgen Berkemeier0 struppi0 Sonia
Hallo,
vor einer Woche etwa war ich schonmal hier. Leider bin ich mit meinem Problem noch nicht weiter als vorher. Ich habe ein Javascript das ein DIV sichtbar und unsichtbar machen soll. Ob sinnig oder nicht, ich brauche es, weils vom Chef so gewünscht ist. Leider funktioniert mein Skript zwar auf IE6, aber nicht auf IE5, welches die Zielplattform darstellt.
Als Fehlermeldung kommt immer, wenn ich die Javascript Funktion aufrufe: "Objekt erwartet" die Funktion wird an mehreren Stellen bei mouseover aufgerufen, der Fehler bezieht sich immer auf den Aufruf.
Um euch einen Gesamtüberblick zu verschaffen, werde ich hier das ganze Dokument abbilden. (Theoretisch könntet Ihr den Code so wie er ist nehmen und in ein HTML Dokument pasten.) Ich hoffe wirklich das ihr mir weiterhelfen könnt, es kann nur ein kleiner Fehler sein, aber ich finde ihn nicht.
Ich danke schonmal jedem, der bereit ist sich das hier anzuschauen
Gruß Sonia
Um euch die Suche in dem Wust zu erleichtern: Die Funktionen aufrufende Stellen sind
--> 1.<body bgColor="#ffffff" onload="verbergen'DivCalVon');verbergen('DivCalBis');" MS_POSITIONING="GridLayout">
2.<DIV id="DivCalVon" onmouseover="zeigen('DivCalVon');" style="Z-INDEX: 111; LEFT: 193px; WIDTH: 153px; POSITION: absolute; TOP: 140px; HEIGHT: 136px" onmouseout="verbergen('DivCalVon');" ms_positioning="GridLayout">
3.<DIV id="DivCalBis" onmouseover="zeigen('DivCalBis');" style="Z-INDEX: 112; LEFT: 518px; WIDTH: 155px; POSITION: absolute; TOP: 143px; HEIGHT: 136px" onmouseout="verbergen('DivCalBis');" ms_positioning="GridLayout">
Die Funktionen "zeigen" und "verbergen" befinden sich gleich zu Anfang unter den Meta Tags
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" > <HTML> <HEAD> <title>Searchform</title> <meta content="Microsoft Visual Studio 7.0" name="GENERATOR"> <meta content="C#" name="CODE_LANGUAGE"> <meta content="JavaScript" name="vs_defaultClientScript"> <meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema"> <script type="text/javascript"> <!-- function zeigen(obj) { var ns4; var ie4; var ie5; var v6; ns4 = (document.layers)? true:false ie4 = (document.all)? true:false ie5= (document.all)?true:false v6 = (document.getElementById)? true:false
if (ns4) { document.layers[obj].visibility = "show"; } else if (v6) { document.getElementById(obj).style.visibility = "visible"; } else if (ie4) { document.all[obj].style.visibility = "visible"; } return eval(obj); }
function verbergen(obj) { var ns4; var ie4; var ie5; var v6; ns4 = (document.layers)? true:false; ie4 = (document.all)? true:false; ie5= (document.all)?true:false; v6 = (document.getElementById)? true:false;
if (document.layers) { document.layers[obj].visibility = "hide"; } else if (document.getElementById) { document.getElementById(obj).style.visibility = "hidden"; } else if (document.all[obj]) { document.all[obj].style.visibility = "hidden"; } return eval(obj); } //--> </script> </HEAD> <body bgColor="#ffffff" onload="verbergen'DivCalVon');verbergen('DivCalBis');" MS_POSITIONING="GridLayout"> <form name="Form1" method="post" action="SearchForm.aspx" id="Form1"> <input type="hidden" name="__EVENTTARGET" value="" /> <input type="hidden" name="__EVENTARGUMENT" value="" /> <input type="hidden" name="__VIEWSTATE" value="--snip--"
<script language="javascript"> <!-- function __doPostBack(eventTarget, eventArgument) { var theform = document.Form1; theform.__EVENTTARGET.value = eventTarget; theform.__EVENTARGUMENT.value = eventArgument; theform.submit(); } // --> </script>
<table id="STable" style="Z-INDEX: 101; LEFT: 1px; POSITION: absolute; TOP: 0px" height="0" cellspacing="1" cellpadding="0" width="100%" border="1"> </table>
<DIV id="DivCalBis" onmouseover="zeigen('DivCalBis');" style="Z-INDEX: 112; LEFT: 518px; WIDTH: 155px; POSITION: absolute; TOP: 143px; HEIGHT: 136px" onmouseout="verbergen('DivCalBis');" ms_positioning="GridLayout"> <table id="CalBis" cellspacing="0" cellpadding="1" bordercolor="#3366CC" border="0" style="color:#003399;background-color:White;border-color:#3366CC;border-width:1px;border-style:solid;font-family:Verdana;font-size:8pt;height:132px;width:151px;border-collapse:collapse;LEFT: 1px; POSITION: absolute; TOP: 1px"> <tr>umfangreiche Tabelle</tr> </table> </DIV> <DIV id="DivCalVon" onmouseover="zeigen('DivCalVon');" style="Z-INDEX: 111; LEFT: 193px; WIDTH: 153px; POSITION: absolute; TOP: 140px; HEIGHT: 136px" onmouseout="verbergen('DivCalVon');" ms_positioning="GridLayout"> <table id="CalVon" cellspacing="0" cellpadding="1" bordercolor="#3366CC" border="0" style="color:#003399;background-color:White;border-color:#3366CC;border-width:1px;border-style:solid;font-family:Verdana;font-size:8pt;height:132px;width:151px;border-collapse:collapse;LEFT: 0px; POSITION: absolute; TOP: 2px"> <td>UMFANGREICHE TABELLE</td></table> </DIV> <TABLE id="Table1" style="Z-INDEX: 102; LEFT: 3px; POSITION: absolute; TOP: 3px" height="78" cellSpacing="0" cellPadding="1" width="690" border="0"> <TR> <TD align="middle" width="87" bgColor="#996666" height="18"><span id="Label2" style="color:White;background-color:#996666;font-family:Verdana;font-size:Smaller;font-weight:bold;">Location:</span></TD> <TD align="left" width="299" bgColor="#996666" height="18"><span id="Label1" style="color:White;background-color:#996666;font-family:Verdana;font-size:Smaller;font-weight:bold;width:87px;">Suchbereich:</span></TD> <TD bgColor="#996666" height="18"><span id="maxHits" style="color:White;background-color:#996666;font-family:Verdana;font-size:Smaller;font-weight:bold;">maximale Treffer:</span></TD> <TD bgColor="#996666"></TD> </TR> <TR> <TD align="middle" width="87" bgColor="#000066" height="13"></TD> <TD align="left" width="299" bgColor="#000066" height="13"><select name="DDLSuch" id="DDLSuch" onchange="__doPostBack('DDLSuch','')" language="javascript" style="font-family:Verdana;width:245px;"> <option value=""></option> <option value="one">one</option> <option value="two">two</option> <option value="three">three</option>
</select></TD> <TD bgColor="#000066" height="13"><select name="DDLmaxHit" id="DDLmaxHit" style="font-family:Verdana;height:21px;width:114px;"> <option selected="selected" value="1">1</option> <option value="2">2</option>
</select></TD> <TD bgColor="#000066"></TD> </TR> <TR> <TD width="87" bgColor="#000066"><span id="lblPass" style="color:White;font-family:Verdana;font-size:Smaller;width:151px;"></span></TD> <TD width="299" bgColor="#000066"><span id="lblUser" style="color:White;font-family:Verdana;font-size:Smaller;width:155px;"></span></TD> <TD bgColor="#000066"></TD> <TD bgColor="#000066"></TD> </TR> </TABLE> <A onmouseover="zeigen('DivCalVon');" onmouseout="verbergen('DivCalVon');" href="#"> <IMG id="IMG1" style="Z-INDEX: 107; LEFT: 328px; POSITION: absolute; TOP: 149px" alt="Kalender öffnen" src="pfeil.JPG"></A> <DIV id="DivLok" style="Z-INDEX: 103; LEFT: 3px; WIDTH: 154px; POSITION: absolute; TOP: 81px; HEIGHT: 100%; BACKGROUND-COLOR: #000066" ms_positioning="GridLayout"><table id="CBLLok" border="0" style="color:White;font-family:Verdana;font-size:XX-Small;font-weight:bold;LEFT: 12px; POSITION: absolute; TOP: 9px"> <tr> <td><input id="CBLLok_0" type="checkbox" name="CBLLok:0" /><label for="CBLLok_0">Hamburg</label></td> </tr><tr> <td><input id="CBLLok_1" type="checkbox" name="CBLLok:1" /><label for="CBLLok_1">Frankfurt</label></td> </tr> </table></DIV> <span id="Label3" style="font-family:Verdana;font-size:8pt;font-weight:bold;width:51px;Z-INDEX: 104; LEFT: 191px; POSITION: absolute; TOP: 91px">von:</span><span id="Label4" style="font-family:Verdana;font-size:8pt;font-weight:bold;width:51px;Z-INDEX: 105; LEFT: 592px; POSITION: absolute; TOP: 93px">bis:</span><input name="TxtVon" type="text" value="6.11.2002" id="TxtVon" style="font-family:Verdana;Z-INDEX: 106; LEFT: 191px; POSITION: absolute; TOP: 115px" /><input name="TxtBis" type="text" value="6.11.2002" id="TxtBis" style="font-family:Verdana;Z-INDEX: 108; LEFT: 516px; POSITION: absolute; TOP: 116px" /> <A onmouseover="zeigen('DivCalBis');" onmouseout="verbergen('DivCalBis');" href="#"> <IMG style="Z-INDEX: 109; LEFT: 653px; POSITION: absolute; TOP: 148px" alt="Kalender öffnen" src="pfeil.JPG"></A> </form> <TABLE id="Table2" style="Z-INDEX: 110; LEFT: 191px; POSITION: absolute; TOP: 172px" height="98" cellSpacing="0" cellPadding="0" width="77" border="0"> <TR> <TD> <form action="SearchForm.aspx" method="get"> <DIV id="DIV1" style="WIDTH: 511px; POSITION: relative; HEIGHT: 317px; BACKGROUND-COLOR: #000066" ms_positioning="GridLayout"><span id="lblOutput" style="LEFT: 198px; POSITION: absolute; TOP: 157px">INn</span></DIV> <input type="submit" id="BtnSearch" Font-Names="Verdana" Text="Suchen"> </form> </TD> </TR> <TR> <TD> <DIV id="DivHitList" style="WIDTH: 511px; POSITION: relative; HEIGHT: 114px" ms_positioning="GridLayout"></DIV> </TD> </TR> </TABLE> </body> </HTML>
Hallo Sonia
1.<body bgColor="#ffffff" onload="verbergen'DivCalVon');verbergen('DivCalBis');" MS_POSITIONING="GridLayout">
Hast du nicht etwa ein Klammer vergessen??????
onload="verbergen('DivCalVon');verbergen('DivCalBis');" MS_POSITIONING="GridLayout">
Gruss Ramy
hi
1.<body bgColor="#ffffff" onload="verbergen'DivCalVon');verbergen('DivCalBis');" MS_POSITIONING="GridLayout">
Hast du nicht etwa ein Klammer vergessen??????
onload="verbergen('DivCalVon');verbergen('DivCalBis');" MS_POSITIONING="GridLayout">
nein die muß beim kopieren abhanden gekommen sein
der aufruf sieht so aus:
<body bgColor="#ffffff" onload="verbergen('DivCalVon');verbergen('DivCalBis');" MS_POSITIONING="GridLayout">
Hallo
also bei mir geht's ohne fehlermeldung, allerdings benutze IE5.5 SP2
Gruss ramy
Es MUSS im IE 5.01 laufen!
Alles andere kann ich leider vergessen
Hallo,
Der IE5 kann DOM, also document.getElementById, es sollte also die gleiche Funktion wie beim IE6 aufgerufen werden. In welcher Zeile kommt die Fehlermeldung? Warum sind zeigen und verbergen nicht symmetrisch? Evtl. würde hier auch eine Funktion mit zusätzlichem Übergabeparameter reichen.
In der Zeile
<body bgColor="#ffffff" onload="verbergen'DivCalVon');verbergen('DivCalBis');" MS_POSITIONING="GridLayout">
fehlt eine "(". ^
Gruß, Jürgen
Hallo,
Der IE5 kann DOM, also document.getElementById, es sollte also die gleiche Funktion wie beim IE6 aufgerufen werden. In welcher Zeile kommt die Fehlermeldung?
in jeder die die funktion aufruft
Warum sind zeigen und verbergen nicht symmetrisch?
weil ich dran rumgefummelt habe und es an der anderen vergaß
aber die sind jetzt angeglichen und trotzdem gehts nicht
Evtl. würde hier auch eine Funktion mit zusätzlichem Übergabeparameter reichen.
Programmiertechnische Feinheiten erst wenn der Code funktioniert
In der Zeile
<body bgColor="#ffffff" onload="verbergen'DivCalVon');verbergen('DivCalBis');" MS_POSITIONING="GridLayout">
fehlt eine "(". ^
die muß beim kopieren abhanden gekommen sein, ist aber im code
Hallo Sonja,
die Events heißen onMouseover und onMouseout, also mit großem "M". Vieleicht ist der IE5.01 ja pingeliger als der IE6? Leider habe ich keinen 5er mehr, um selbst die Sache zu testen.
Gruß, Jürgen
Hallo Sonja,
die Events heißen onMouseover und onMouseout, also mit großem "M". Vieleicht ist der IE5.01 ja pingeliger als der IE6? Leider habe ich keinen 5er mehr, um selbst die Sache zu testen.
Dann sag mal was dein Browser sagt wenn du das ausführst:
<img onMouseover="test();" src="about:blank">
<script>
alert('onMouseover=' + document.images[0].onMouseover +
'\nonmouseover=' + document.images[0].onmouseover);
</script>
Struppi.
Hallo Struppi,
das ist sehr interessant. Lt. Selfhtml heist es onMousexxx. Aber die Meldung "onMouseover=undefined" ist eindeutig. Trotzdem funktionieren die Beispiele. Gleiches gilt für Mozilla. Ich glaube, hier müssen die Experten ran.
Gruß, Jürgen
Hallo Struppi,
das ist sehr interessant. Lt. Selfhtml heist es onMousexxx. Aber die Meldung "onMouseover=undefined" ist eindeutig. Trotzdem funktionieren die Beispiele. Gleiches gilt für Mozilla. Ich glaube, hier müssen die Experten ran.
Die Schreibweise in HTML is egal in Javascript muss es klein geschrieben werden.
Die Lösung hab ich bereits gepostet.
Struppi.
Hallo Struppi,
so einfach ist die Sache leider nicht. Versuch mal folgendes:
<img onMouseover="test1();" src="about:blank">
<img onmouseover="test2();" src="about:blank">
<script>
function test1() {;}
alert('onMouseover=' + document.images[0].onMouseover + '\nonmouseover=' + document.images[0].onmouseover);
alert('onMouseover=' + document.images[1].onMouseover + '\nonmouseover=' + document.images[1].onmouseover);
</script>
und fahr mit der Maus über beide Bilder. In der Zeile mit kleinem "m" kommt dann nämlich "Objekt erwartet". Es muss, wie es auch im Selfhtml steht, "onMouseover" heißen.
Gruß, Jürgen
Hallo,
jetzt habe ich nicht aufgepasst: es fehlt eine Zeile:
<img onMouseover="test1();" src="about:blank">
<img onmouseover="test2();" src="about:blank">
<script>
function test1() {;}
function test2() {;}
alert('onMouseover=' + document.images[0].onMouseover + '\nonmouseover=' + document.images[0].onmouseover);
alert('onMouseover=' + document.images[1].onMouseover + '\nonmouseover=' + document.images[1].onmouseover);
</script>
so läuft es fehlerfrei. Offensichtlich ist es egal, ob "m" oder "M" benutzt wird.
Gruß, Jürgen
Als Fehlermeldung kommt immer, wenn ich die Javascript
Funktion aufrufe: "Objekt erwartet"
die Funktion wird an mehreren Stellen bei mouseover aufgerufen,
der Fehler bezieht sich immer auf den Aufruf.
Wie wär's mit Fehlerprüfung?
<script type="text/javascript">
<!--
function zeigen(obj)
{
var ns4;
var ie4;
var ie5;
var v6;
ns4 = (document.layers)? true:false
ie4 = (document.all)? true:false
ie5= (document.all)?true:false
v6 = (document.getElementById)? true:falseif (ns4)
{
document.layers[obj].visibility = "show";
}
else if (v6)
{
document.getElementById(obj).style.visibility = "visible";
}
else if (ie4)
{
document.all[obj].style.visibility = "visible";
}
return eval(obj);
}function verbergen(obj)
{
var ns4;
var ie4;
var ie5;
var v6;
ns4 = (document.layers)? true:false;
ie4 = (document.all)? true:false;
ie5= (document.all)?true:false;
v6 = (document.getElementById)? true:false;if (document.layers)
{
document.layers[obj].visibility = "hide";
}
else if (document.getElementById)
{
document.getElementById(obj).style.visibility = "hidden";
}
else if (document.all[obj])
{
document.all[obj].style.visibility = "hidden";
}
return eval(obj);
}
//-->
</script>
diese Prüfungen sind völlig unnötig!
und eval(obj) ruft vermutlich den Fehler hervor wozu soll das dienen?
<script type="text/javascript">
<!--
function verbergen(obj)
{
var layer = getObj(obj);
if(!layer) return false;
if (document.layers) layer.visibility = "hide";
else layer.style.visibility = "hidden";
return true;
}
function zeigen(obj)
{
var layer = getObj(obj);
if(!layer) return false;
if (document.layers) layer.visibility = "show";
else layer.style.visibility = "visible";
return true;
}
function getObj(obj)
{
if (document.layers)
return document.layers[obj];
else if(document.getElementById)
return document.getElementById(obj);
else if(document.all)
return document.all[obj];
else
return null;
}
Das sollte funktionieren.
Struppi.
hi
ja, danke schön!!!!!!!!!!!!
Gruß
Sonia