Versteht einer diesen Fehler im NN4
Oliver
- javascript
Hi,
also, folgende Funktion:
for(i=1;i<=(topics.length-1);i++){
createLay(topics[i]);
//alert(topics[i]);
}
gibt folgende Fehlermeldung im NN4 zurück:
i is not defined.
Wenn man anstatt des Funktionsaufrufes den Alert aktiviert, dann zeigt er alles einwandfrei an. auch der Umweg:
tmpVar = topics[i];
createLay(tmpVar);
bringt absolut nix. Die Funtion createLay() geht so los:
function createLay(tmpString){
$tmp = tmpString.split("|");
...
}
dann kommen noch reichlich String-Operationen und document.write, aber nix ungewönliches.
Der Array drüber ist auch ok.
Ich versteh' einfach nicht, warum i 'not defined' sein soll, einfacher gehts doch nun wirklich nicht.
Vielleicht kann mir ja einer helfen...
Vielen Dank schonmal
:o) Oli
Hi,
gibt folgende Fehlermeldung im NN4 zurück:
i is not defined.
hm, der gesamte Funktions-Aufbau könnte interessant sein.
$tmp = tmpString.split("|");
Da fällt mir doch gleich am Anfang der Zeile etwas auf... ;-)
Hast Du dazu 'ne URL?
Cheatah
wenn du magst .) hier ist das ganze:
// ****************************************************************************
// x42 menu-generator
// 07/2001 by Oliver, oliver@webwichtel.de
// ****************************************************************************
// 9 topics main-menu
// each main-topic can have upt to 9 sub-topics
// the topic-numer 0 (null) is needed for technical reasons
// ****************************************************************************
// variables
var id = ""; // layername
var xPos = 0; // pos from left
var yPos = 0; // pos from top
var textColor = ""; // text-color
var textSize = ""; // text-size
var bgColor = ""; // bgcolor
var hoverBgColor = ""; // bgcolor onMouseOver
var view = ""; // initial visibility mode
var leftBorder = 0; // border-setting for IE
var rightBorder = 0; // border-setting for IE
var topBorder = 0; // border-setting for IE
var bottomBorder = 0; // border-setting for IE
var borderStyle = ""; // border-style for IE
var layWidth = 0; // width of topic displayed
var layHeight = 0; // height of topic displayed
var bgImage = ""; // optional background image for IE
var content = ""; // content of topic
// array for menu-topics
var topics = new Array();
// parameters are devided by "|"
// don't start with [0], start with [1], like the example
// you may use HTML using single exclamation marks like /'/ instead of /"/
// topics[number] = ("id|xPos|yPos|textColor|textSize|bgColor|hoverBgColor|view|leftBorder|rightBorder|topBorder|bottomBorder|layWidth|layHeight|bgImage|content");
topics[1] = ("lay1|100|100|#ffffff|12|#000000|#0000ff|visible|1|1|1|1|solid|150|16|0|<a href='#'>menupunkt 1</a>");
topics[2] = ("lay2|100|120|#ffffff|12|#000000|#0000ff|visible|1|1|1|1|solid|150|16|0|menupunkt 1");
topics[3] = ("lay3|100|140|#ffffff|12|#000000|#0000ff|visible|1|1|1|1|solid|150|16|0|menupunkt 1");
// this function controls menu-generation
function makeMenu(){
for(i=1;i<=(topics.length-1);i++){
createLay(topics[i]);
//alert(topics[i]);
}
}
// create menu-layers --> bg-image does not work
function createLay(tmpString){
$tmp = tmpString.split("|");
for(k=0;k<=$tmp.length;k++){
id = $tmp[0];
xPos = parseInt($tmp[1])+"px";
yPos = parseInt($tmp[2])+"px";
textColor = $tmp[3];
textSize = parseInt($tmp[4])+"px";
bgColor = $tmp[5];
hoverBgColor = $tmp[6];
view = $tmp[7];
leftBorder = parseInt($tmp[8])+"px";
rightBorder = parseInt($tmp[9])+"px";
topBorder = parseInt($tmp[10])+"px";
bottomBorder = parseInt($tmp[11])+"px";
borderStyle = $tmp[12];
layWidth = parseInt($tmp[13])
layHeight = parseInt($tmp[14])
bgImage = $tmp[15];
content = $tmp[16];
}
if(isNN){
$lay ="immer nur langsam";
}
if((isIE)||(isGecko)){
$lay ="<div id='"+id+"' style='position:absolute;left:"+xPos+";top:"+yPos+";color:"+textColor+";font-size:"+textSize+";background:"+bgColor+";visibility:"+view+";border-left:"+leftBorder+" "+borderStyle+";border-right:"+rightBorder+" "+borderStyle+";border-top:"+topBorder+" "+borderStyle+";border-bottom:"+bottomBorder+" "+borderStyle+";width:"+layWidth+";height:"+layHeight+"'>";
$lay += content;
$lay += "</div>\n";
}
document.write($lay);
}
:o) Oli
was ist Dir eigentlich aufgefallen? Das der Itentifier mit $ losgeht?
Hallo Oli,
also, ganz so genau hab ich das Skript nicht gelesen, hab aber mal einen Verdacht:
Function createLay(tmpString) kommt erst nach function makeMenu und wird von makeMenu aus aufgerufen.
Manche Sprachen mögen das einfach nicht. Wie das bei JS ist, weiß ich nicht, aber tausch die Reihenfolge mal, vielleicht hilft es.
Gruß Vedat
Hallo Oliver!
dann kommen noch reichlich String-Operationen und document.write,
^^^^^^^^^^^^^^
und das wird vielleicht per onLoad aufgerufen? Dann hättest du dir ein 1a selbstdestruktives Script gebastelt.
Der Netscape scheint nicht nur den HTML-Kontext sondern auch den Javascript-Kontext einer Seite zu löschen sobald in diese per document.write nach fertigladen reingschrieben wird.
Übliche Abhilfe: erst alles was ge-document.write-d werden soll in einer Variablen sammeln und dann auf einen Schlag ausgeben.
Gruss,
Carsten