Funktion: Fehler "Object expected"?
BLJ
- javascript
HiHo
bin ja nur n grosser Noob auf dem Gebiet, hab desshalb mal alles von div. Tuts "1:1" abgeschrieben + durch meine Parameter ersetzt und so.
Nun steh ich aber vor einem grossen Problem. Example:
<script type="javascript">
<!--
function makevis() {
}
//-->
</script>
mit diesem Code hab ich zuletzt gestestet, er gibt zurück: Linien Nummer wo die abschliessende Klammer ( "}" ) steht, Error: "Object expected" + Char: 1 + Code: 0
auch wenn ich etwas "sinnvolles" in die Funktion reintu, wie z.B. alert("blablabla");
funktioniert es nicht, der Fehler ist der gleiche, nur wird die zeile in der Fehlermeldung +1 nach unten geschoben, eben wieder zur abschliessenden Klammer.
Hab keinen blassen wo der Fehler liegen könnte, den vollständigen Code hab ich schon n paar mal durchgeackert (ist natürlich viel länger wie das hier, das ganze file n paar 150Zeilen, wäre aber ne Zumutung).
Das ganze läuft über einen MS Server mit den Frontpage Extensions, schreiben MUSS ich es auch in Frontpage ( :-( ). Das File ist ein *.asp File, zuvor wird noch Code-Serverseitigt ausgeführt. Ausserdem ist der Script teil <head></head><body><script>HIER</script></body>
hat das auch n Einfluss? wenn ich den Script aber vor den Body teil nehme, funktionierts auch nicht? gibt aber IMHO ne andere Fehlermeldung aus....
thx
cu
Hi,
nimm
<script language="javascript">
anstelle von
<script type="javascript">.
CYA
Thorsten
<script language="javascript">
Das ist falsch!
<script type="javascript">.
Das ist richtig!
Struppi.
-> da hab ich zuvor auch schon beides ausprobiert.
ich mach jetzt den gesamten Quellcode hier rein, denn der Content ist Intranet & ich hab gerade keinen I-Net space "auf abruf"
thx 4 help
cu
das ist allerdings nur, was der Inet Explorer bekommt, und ohne asp codes!
------------------------------------------------------------------
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Mac-Adressdatenbank: Suche</title>
<link rel="stylesheet" media="all" type="text/css" href="../inc/style.css">
<link rel="stylesheet" media="print" type="text/css" href="../inc/print.css">
</head>
<body text="#000000" bgcolor="#ffffff" topmargin="0" leftmargin="0" marginheight="0" marginwidth="0">
<table id="maintable" border="0" cellpadding="0" cellspacing="0" width="731">
<tr>
<td height="15"><img src="../img/s.gif" width="1" height="15" alt=""> </td>
<td colspan="4" style="text-align:right;" align="right">
<a class="small" href="..">Home</a>
<a class="small" href="../sitemap.asp">Site Map</a>
</td>
<td rowspan="11"><img src="../img/s.gif" width="10" height="1" alt=""></td>
<td rowspan="11" valign="top">
<a href="http://www.schindler.com"><img src="../img/entree_01.gif" width="25" height="247" border="0" alt="Schindler"></a>
</td>
</tr>
<tr>
<td height="34"><img src="../img/s.gif" width="1" height="34" alt=""> </td>
<td colspan="4"><a class="title" href="/lewe">MAC-Adressdatenbank</a></td>
</tr>
<tr>
<td height="18" colspan="5" align="right"><img src="../img/subtitle.gif" width="212" height="18" alt="The Elevator and Escalator Company"></td>
</tr>
<tr>
<td height="110" colspan="4" rowspan="2">
<img src="../img/topnav.jpg" width="685" height="110" align="top" alt="Logo">
</td>
<td height="10"><img src="../img/s.gif" width="1" height="10" alt=""></td>
</tr>
<tr>
<td height="100" class="navigation"><img src="../img/s.gif" width="1" height="100" alt=""></td>
</tr>
<tr>
<td align="right" valign="bottom" height="24"><img src="../img/s.gif" width="1" height="24" alt=""></td>
<td class="navigation"> </td>
<td colspan="2" class="navigation" style="padding-left:10px;">
Mac-Adressen Suche
</td>
<td class="navigation"> </td>
</tr>
<tr height="20">
<td rowspan="2" colspan="2"> </td>
<td height="20" colspan="2"><img src="../img/s.gif" width="1" height="20" alt=""> </td>
<td rowspan="3"><img src="../img/s.gif" width="1" height="150" border="1"></td>
</tr>
<tr>
<td colspan="2" valign="top">
<script type="javascript">
<!--
function makevis() {
switch (xStatus) {
case "X":
document.getElementByID("aX").style.display="block";
document.getElementByID("aSTRING").style.display="none";
break;
case "NUMB":
document.getElementByID("aX").style.display="none";
document.getElementByID("aSTRING").style.display="block";
break;
case "PRODUCT":
document.getElementByID("aX").style.display="none";
document.getElementByID("aSTRING").style.display="block";
break;
case "SN":
document.getElementByID("aX").style.display="none";
document.getElementByID("aSTRING").style.display="block";
break;
case "NIX":
break;
default:
alert("Fehler im Formular!!!");
break; }
}
//-->
</script>
<form method="POST" name="Auswahl" action="./BB_asplib.asp">
<select size="1" id="stspalte" onChange="makevis(this.value)">
<option value="NIX"></option>
<option value="X">Adressanfang/Ende</option>
<option value="NUMB">Adresslänge</option>
<option value="PRODUCT">Produkt</option>
<option value="SN">Seriennummer</option>
</select>
<div id="aX" style="display:none">
<p>aXaXaXaXaXaXaX</p>
</div>
<div id="aSTRING" style="display:none">
<p>aSTRINGaSTRING</p>
</div>
</form>
</td>
</tr>
<tr>
<td height="30" colspan="4"><img src="../img/s.gif" width="1" height="30" alt=""> </td>
</tr>
<tr>
<td colspan="5" class="footer">© 2002 Schindler Corporate R&D
</td>
</tr>
<tr>
<td width="160"><img src="../img/s.gif" width="160" height="1" alt=""></td>
<td width="20"><img src="../img/s.gif" width="20" height="1" alt=""></td>
<td width="300"><img src="../img/s.gif" width="300" height="1" alt=""></td>
<td width="180"><img src="../img/s.gif" width="180" height="1" alt=""></td>
<td width="12"><img src="../img/s.gif" width="12" height="1" alt=""></td>
</tr>
</table>
</body>
</html>
-> da hab ich zuvor auch schon beides ausprobiert.
ich mach jetzt den gesamten Quellcode hier rein, denn der Content ist Intranet & ich hab gerade keinen I-Net space "auf abruf"
Es waäre abe rnicht nötig gewesen den kompletten HTML Code mit zu posten.
das ist allerdings nur, was der Inet Explorer bekommt, und ohne asp codes!
das ist genau was man braucht um dir zu helfen. Jetzt entsorge ich erstmal den ganzen HTML Müll.
[...]
<script type="javascript">
<!--
function makevis() {
switch (xStatus) {
Was ist xStatus?
Ich vermute mal das soll das Argument sein.
function makevis(xStatus) {
aber ... siehe weiter unten.
case "X":
document.getElementByID("aX").style.display="block";
document.getElementByID("aSTRING").style.display="none";
break;
case "NUMB":
document.getElementByID("aX").style.display="none";
document.getElementByID("aSTRING").style.display="block";
break;
case "PRODUCT":
document.getElementByID("aX").style.display="none";
document.getElementByID("aSTRING").style.display="block";
break;
case "SN":
document.getElementByID("aX").style.display="none";
document.getElementByID("aSTRING").style.display="block";
break;
case "NIX":
break;
default:
alert("Fehler im Formular!!!");
break; }
}
Täusche ich mich oder macht jeder case Block das gleiche?
Ich persönlich finde diese Art des Programmablauf seltsam, du programmierst VB, gell?
Das merkt man an diesen select case Wümern und das du keinerlei Werte überprüfst.
var aX = document.getElementByID("aX");
if(!aX) return alert('Fehler!');
var aString = document.getElementByID("aSTRING")
if(aString) return alert('Fehler!');
// Du weisst nicht ob dies immer klappt.
var aX_display = 'none';
var aString_display = 'block';
if(xStatus == 'X')
{
aX_display = 'block';
aString_display = 'none';
}
if(xStatus != 'NIX')
{
ax.display = aX_display;
aString.display = aString_display;
}
//-->
</script>
Wobei ich einfach veruschen würde, den Parameter passender zu wählen. Z.b. die ID des gwünschten Layers.
<form method="POST" name="Auswahl" action="./BB_asplib.asp">
<select size="1" id="stspalte" onChange="makevis(this.value)">
Ein select hat kein value!
Es hat ein Liste von options
<select size="1" id="stspalte"
onChange="makevis(this.options[this.selectedIndex].value)">
[noch mehr überflüssiges HTML]
Das nächste mal bitte auf das notwendige kürzen, du willst das Leute dir helfen, aber du machst es einem unnötig schwer.
Struppi.
Es waäre abe rnicht nötig gewesen den kompletten HTML Code mit zu posten.
haste eigentlich vollkommen recht.
<script type="javascript">
<!--
function makevis() {
switch (xStatus) {Was ist xStatus?
Ich vermute mal das soll das Argument sein.
function makevis(xStatus) {
genau. Tut mir leid, dass es nicht da war, hatte ich zu testzwecken entfernt. (genau wie das switch && andere).
Täusche ich mich oder macht jeder case Block das gleiche?
Momentan noch... noch, weil es erst ein Test ist, das muss ja zuerst in den Grundfunktionen funktionieren, bevor ich gleich n riesen Programm schreib, was dann doch nicht läuft :)
Ich persönlich finde diese Art des Programmablauf seltsam, du programmierst VB, gell?
VB && C
wobei JS mehr oder weniger == C
Das merkt man an diesen select case Wümern und das du keinerlei Werte überprüfst.
Select Case Würmern? Du meinst, dass ich select case && kein if else if benutze?
also ich finde Case viel geschickter bei so vielen möglichen Resultaten :)
Das mit den Werten Überprüfen stimmt allerdings.
<select size="1" id="stspalte"
onChange="makevis(this.options[this.selectedIndex].value)">
thx
Das nächste mal bitte auf das notwendige kürzen, du willst das Leute dir helfen, aber du machst es einem unnötig schwer.
bleibt mir nur zu sagen, dass du vollkommen recht hast. Ich bin selbst viel in einem grossen Forum tätig, allerdings in einem anderen Segment. Da ärgert man sich auch ständig über solche Sachen :) man fragt sich auch häufig, warum man überhaupt noch anderen "noobs" hilft, welche solche Sachen schreiben...
Mein "original" Problem bleibt nach Korrektur leider noch bestehen, ich hab jetzt mal den neuesten Opera gezogen (der lank war halt gleich bei p3dnow zu oberst :) ) und teste es mit dem.
leider ist "noch schlimmer". gibt keinen Fehler raus, passieren tut aber auch nix. Geprüft habe ich diese Werte diesesmal zuerst :)
cu
HiHo
Mozilla sagt, makevis sei nicht definiert.
Wie definier ich den, bzw WARUM muss ich den definieren? In selfhtml codes hab ichauf jeden fall nix spezielles "gesehn"...
thx
cu
HiHo
Mozilla sagt, makevis sei nicht definiert.
Wie definier ich den, bzw WARUM muss ich den definieren? In selfhtml codes hab ichauf jeden fall nix spezielles "gesehn"...
hmm, das ist seltsam. Du musst es eigentlich nicht definieren. Kein anderer Fehler aufgetreten?
wegen den select case Würmern.
Ich programmier mittlerweile das meiste mit Perl, und da gibt es kein select case und oft läßt's sich vermeiden und wenn dann bleibt oftmals ein einzeiler zurück.
Ich glaub, das liegt daran, da in VB (auch in C++) oft mit Konstanten bei Ereignissen gearbeitet werden muss und da sind solche Konstrukte übersichlicher.
Struppi.
HiHo
Mozilla sagt, makevis sei nicht definiert.
Wie definier ich den, bzw WARUM muss ich den definieren? In selfhtml codes hab ichauf jeden fall nix spezielles "gesehn"...
Ich vermute mal folgendes: Da Du nunmehr <script type="javascript"> geschrieben hast und der Mozilla den MIME-Type "javascript" nicht kennt ("text/javascript" waere richtig), hat er diesen Script-Block voellig ignoriert. Den onChange-Handler weiter unten verarbeitet er aber als JavaScript (was imho nicht korrekt ist, aber egal). Da die makevis-Funktion aber vorher ueberlesen wurde, ist sie an dieser Stelle nicht definiert.
Uebrigens ist zu empfehlen, einen Script-Block immer im <head> unterzubringen, es sei denn, er macht Ausgaben per document.write().
So long
Moin!
<script language="javascript">
Das ist falsch!
Naja, es ist "deprecated". In HTML 4 Transitional kann man es noch benutzen.
<script type="javascript">.
Das ist richtig!
Nein, auch falsch. Richtig waere:
<script type="text/javascript">
Denn man muss an dieser Stelle einen MIME-Typ angeben, keine Sprachbezeichnung.
So long
HiHo
bin ja nur n grosser Noob auf dem Gebiet, hab desshalb mal alles von div. Tuts "1:1" abgeschrieben + durch meine Parameter ersetzt und so.Nun steh ich aber vor einem grossen Problem. Example:
<script type="javascript">
<!--
function makevis() {}
//-->
</script>
Das funktioniert einwandfrei. Ich vermute aber mal, das da noch mehr steht.
mit diesem Code hab ich zuletzt gestestet, er gibt zurück: Linien Nummer wo die abschliessende Klammer ( "}" ) steht, Error: "Object expected" + Char: 1 + Code: 0
Die Ausgabe vom IE sind absolut unbrauchbar zum debuggen, du möchtest vielleicht Mozilla oder Netscape verwenden, deren Ausgaben sind deutlicher.
Ohne Quellcode wird man dir nicht weiterhelfen können. Gib doch mal ein Link zu einem Testcase an.
Struppi.