Verfasst am: Do Okt 07, 2004 1:33 pm Titel: Problem mit .js Dateien
Also ihr kennt euch doch aus mit Javascript, ich hät da ein kleines Problem.
Und zwar lese ich aus einem Cookie einen String....diesen übergebe ich an eine Variable und dann wird auf diesen String mit einer IF-Abfrage geprüft. Somit will ich festlegen welcher User welches Menü sehen darf.
Mein Problem ist jetzt das ich das ganze in einer .js Datei mache und diese mir dann ein Fehler bringt, wenn ich Methoden aufrufe. Übergeb ich diesen String von Hand, also <usercode="irgendwas"> funktioniert alles.....will ich ihn aus der Methode cookieLesen() holen geht es nicht.
dieses Menü wird falsch angezeigt...
makeMenu('top','Thema 1')
makeMenu('sub','Gesamt','doc/mainframe.html','mainframe')
makeMenu('sub','Gesamt (akt. Jahr)')
und dieses garnicht.....
if( usercode == "irgendwas")
{
makeMenu('top','Thema 2')
makeMenu('sub','Gesamt')
} _________________ Software-Programmierung ist das Rennen zwischen Programmierern, die immer größere, idiotensichere Programme zu entwickeln versuchen, und dem Universum, das immer größere Idioten entwickelt.
Also gut.....nochmal. Ich habe eine Datei namens Object.js und eine namens Menu.html. In der Menu.html befinden sich die Funktionen, wie moveDown() oder makeMenu() und dann auch meine eigene Funktion cookieLesen(). In der Object.js befinden sich einige Variablen die die Einstellungen der Seite übernehmen und die Initialisierung von makeMenu()
Hier der Quellcode, weil ich ihn ja net anhängen kann (ist halt unübersichtlicher)
===============================================
//Variables to set
between = 28 // The pixel between the menus and the submenus
mainheight = 25 // The height of the mainmenus
subheight = 22 // The height of the submenus
pxspeed = 100 // The pixel speed of the animation (A. Stahle: 13)
timspeed = 0 // The timer speed of the animation (A. Stahle: 15)
menuy = 200 // The top placement of the menu.
menux = 0 // The left placement of the menu
//Leave this line
preLoadBackgrounds(level0_regular,level0_round,level1_regular,level1_round,level1_sub,level1_sub_round,level1_round2,level2_regular,level2_reg_seperator,level2_round)
//Starting the menu
onload=SlideMenuInit; // Was des macht weiß ich nicht
===============================================
Hier ist die menu.html, die habe ich so übernommen und habe nur meine Funktion hinzugefügt!!
===============================================
<HTML>
<HEAD>
<TITLE>Menü Nr 5</TITLE>
<META name="Author" content="MTA Informatik">
var bw = lib_bwcheck()
//Opera didn't seem to like the padding in the layers, it messes up the background-images, so here's a version without it.
if(bw.opera5) document.write("<style>DIV.clSlide{padding:0px; background-image:url(' ')}\nDIV.clSlideSub{padding:0px; background-image:url(' ')}\nDIV.clSlideSub2{padding:0px; background-image:url(' ')}</style>")
function b_showIt() {this.css.visibility="visible"; this.status=1}
function b_hideIt() {this.css.visibility="hidden"; this.status=0}
function b_movey(y) {this.y=y; this.css.top=this.y}
function b_moveIt(x,y) {this.x=x; this.y=y; this.css.left=this.x;this.css.top=this.y}
function b_moveBy(x,y) {this.x=this.x+x; this.y=this.y+y; this.css.left=this.x;this.css.top=this.y}
function b_bgImg(img) {
if (bw.ie || bw.dom)
this.css.backgroundImage = "url(" + img + ")"
else
this.css.background.src = img
}
function b_clipTo(t,r,b,l,w)
{
if(bw.ns4) {
this.css.clip.top = t
this.css.clip.right = r
this.css.clip.bottom = b
this.css.clip.left = l
}
else {
this.css.clip = "rect(" + t + "," + r + "," + b + "," + l + ")"
if (w) {
this.css.width = r
this.css.height = b
}
}
}
/********************************************************************************
Initiating page, making objects..
********************************************************************************/
function SlideMenuInit()
{
oSlideMenu = new makeMenuObj('divSlideCont')
oSlideMenu.moveIt(menux,menuy)
oSlide = new Array()
for(i=0;i<menus.length;i++) {
oSlide[i] = new makeMenuObj('divSlide'+i,'divSlideCont')
oSlide[i].subs = menus[i].subs
oSlide[i].sub = new Array()
oSlide[i].moveIt(0,mainheight*i)
oSlide[i].starty = oSlide[i].y
if(bw.opera)
oSlide[i].css.paddingLeft = "10px"
if (!menus[i].seperator)
oSlide[i].bgImg(level0_regular)
for(j=0;j<oSlide[i].subs;j++) {
oSlide[i].sub[j] = new makeMenuObj('divSlideSub'+i+"_"+j,'divSlideCont')
oSlide[i].sub[j].moveIt(10,oSlide[i].y+subheight*j+between)
oSlide[i].sub[j].starty = oSlide[i].sub[j].y
oSlide[i][j] = new Array()
oSlide[i][j].subs = menus[i][j].subs
oSlide[i][j].sub = new Array()
img = level1_round
if (oSlide[i][j].subs!=0) {
if (j!=oSlide[i].subs-1)
img = level1_sub
else
img = level1_sub_round
oSlide[i].sub[j].css.color = "white"
}
else {
if (j!=oSlide[i].subs-1)
img = level1_regular
}
oSlide[i].sub[j].origimg = img
oSlide[i].sub[j].bgImg(img)
for(a=0;a<oSlide[i][j].subs;a++) {
oSlide[i][j].sub[a] = new makeMenuObj('divSlideSub'+i+"_"+j+"_"+a,'divSlideCont')
oSlide[i][j].sub[a].moveIt(20,oSlide[i].sub[j].y+subheight*a+between-2)
oSlide[i][j].sub[a].starty = oSlide[i][j].sub[a].y
oSlide[i][j][a] = new Array()
oSlide[i][j][a].subs = menus[i][j][a].subs
oSlide[i][j][a].sub = new Array()
if (a != oSlide[i][j].subs-1)
img = level2_regular
else
img = level2_round
if (menus[i][j][a].seperator == 1) {
img = level2_reg_seperator
}
oSlide[i][j].sub[a].origimg = img
oSlide[i][j].sub[a].bgImg(img)
}
}
}
oSlideMenu.showIt()
}
/********************************************************************************
Variables
********************************************************************************/
var active=-1;var going;var isthere; var sactive=-1; var sisthere=-1; var s2active=-1; var s2isthere=-1
/********************************************************************************
Switch menu function.
********************************************************************************/
function swmenu(num,snum,s2num)
{
if(snum!=-1)
{
if (oSlide[num][snum].subs == 0) return
}
if(s2num!=-1) {
if (oSlide[num][snum][s2num].subs == 0) return
}
if ((num!=active || snum!=sactive || s2num!=s2active) && !going)
{
going = true
isthere = 0
sisthere = 0
moveUp(num,snum,s2num)
}
}
/********************************************************************************
Moving the menus upward to their original position.
********************************************************************************/
function moveUp(num,snum)
{
if(snum==-1)
{
for(i=0;i<oSlide.length;i++)
{
if(oSlide[i].y>oSlide[i].starty+pxspeed && active!=i) oSlide[i].moveBy(0,-pxspeed)
else{if(active!=i) oSlide[i].moveIt(oSlide[i].x,oSlide[i].starty); isthere=i}
}
/********************************************************************************
Functions to write out the layers...
********************************************************************************/
menus = new Array()
var a=0
var b=0
var c=0
var d=0
function makeMenu(type, textin, lnk, target, end)
{
text = ""
str = ""
tg = ""
// Leerzeichen und Bindestrich durch "$nbsp;" (= #160 = "Sonderleerzeichen") ersetzen
// --> vermeidet Zeilenumbruch bei zu langen Strings
for (i=0; i<textin.length; i++) {
t = textin.substr(i,1)
if (t == " " || t == "-")
text += " "
else
text += t
}
// Auffüllen mit #160 --> Verlängern des Texts, um Klicken auf der ganzen Schaltfläche
// zu ermöglichen
for (i=text.length; i<40; i++) {
text += " "
}
Vielleicht wirst du ja schlau draus, wenn du schon dabei bist, kannst du mir vielleicht auch erklären warum dieses Menu nicht mehr zuklappbar ist!! _________________ Software-Programmierung ist das Rennen zwischen Programmierern, die immer größere, idiotensichere Programme zu entwickeln versuchen, und dem Universum, das immer größere Idioten entwickelt.
Also ohne allzuviel Ahnung von java-script zu haben kann ich nur vermuten, dass da mitm Cookie-auslesen was net passt (also wegen dem wird net angezeigt). Vielleicht groß-kleinschreibung odern Leerzeichen inner Variable oder irgendsowas... _________________ Kurz und bündig: QUAK!
Naja hab ich schon alles ausprobiert, des mit'm Cookie auslesen klappt einwandfrei.....nur sobald ich ne Funktion in diesem Object.js drin hab funzt des nemme. Obwohl ja makeMenu() auch ne Funktion is!!! _________________ Software-Programmierung ist das Rennen zwischen Programmierern, die immer größere, idiotensichere Programme zu entwickeln versuchen, und dem Universum, das immer größere Idioten entwickelt.
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum nicht posten Du kannst Dateien in diesem Forum nicht herunterladen