Toon posts:

[javascript] layers

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hoi ik heb een javascript probleempje, het script zou stukken van de site moeten verbergen of juist laten zien, echter krijg ik steeds de foutmelding als de onclick wordt aangeklikt javascript ergens een ; mist. Weet iemand wat er fout is? thnx
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
layArray= new Array();
layArray[8] = "a10";

function fadeInOut(layerName,showHide,dur){
    var newDur = dur * 1.0;
    eval(layerName + '.style.filter="blendTrans(duration=' + newDur + ')"');

    // make sure filter is not already playing
    var curStat = eval(layerName + '.filters.blendTrans.status');

    if (curStat != dur) {
        eval(layerName + '.filters.blendTrans.apply()');
        eval(layerName + '.style.visibility="' + showHide + '"');
        eval(layerName + '.filters.blendTrans.play()');
    }


}

function seeDontSee(layerName,vis) {
    if (vis == "see") {
        eval('(' + sp_docObj + '["' + layerName + '"]' + sp_see + ')');
    }
    else {
        eval('(' + sp_docObj + '["' + layerName + '"]' + sp_dontSee + ')');
    }
}

function hideLays(curLay) {
for (index=0;index<112;index++) {
        checklayer=layArray[index];
        if (checklayer = curLay) {
            seeDontSee(checklayer,'visible');
        }
    }

    if (ie4 == "yes") {
        fadeInOut(curLay,'visible',2);
    }
    else {
        seeDontSee(curLay,'see');
    }
}

<div id="a10" style=" visibility: visible">
<input type="radio" name="a10" value="blaat" onclick="hideLays('14')">
</div>

  • Clay
  • Registratie: Oktober 1999
  • Laatst online: 22-06 13:51

Clay

cookie erbij?

if (checklayer = curLay) {

moet iig met ==, niet enkel =

Instagram | Flickr | "Let my music become battle cries" - Frédéric Chopin


Verwijderd

Topicstarter
keej is aangepast

Verwijderd

Topicstarter
Ik heb het vermoeden dat de fout in de functie fadeInOut zit

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

Sorry, maar hier met IE5.0 kan ik niet testen. blendTrans wordt volgens mij pas vanaf IE5.5 ondersteund. Let daar dus op!
code:
1
if (ie4 == "yes")

Intentionally left blank


Verwijderd

Topicstarter
Heej dat zou het best wel es kunnen zijn, want heb er ffies mee gestoeid en blijf noujuist op dat stukkie weer hangen, dus ik download ff ie6 want heb hier ook ie5.

  • r0bert
  • Registratie: September 2001
  • Laatst online: 11-08 16:19
code:
1
eval(layerName + '.style.filter="blendTrans(duration=' + newDur + ')"');


code:
1
eval(layerName + '.style.filter="blendTrans(duration=' + newDur + ')";');


code:
1
<input type="radio" name="a10" value="blaat" onclick="hideLays('14')">


code:
1
<input type="radio" name="a10" value="blaat" onclick="hideLays('14');">

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 29-08 19:47

Bosmonster

*zucht*

;'s zijn niet echt noodzakelijk in JS Robert.

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

Op maandag 25 februari 2002 11:05 schreef r0bert het volgende:
code:
1
eval(layerName + '.style.filter="blendTrans(duration=' + newDur + ')"');


code:
1
eval(layerName + '.style.filter="blendTrans(duration=' + newDur + ')";');


code:
1
<input type="radio" name="a10" value="blaat" onclick="hideLays('14')">


code:
1
<input type="radio" name="a10" value="blaat" onclick="hideLays('14');">
Heeft er imho niks mee te maken; qua syntax is de code van rollator volgens mij gewoon goed; probleem is dat IE5.0 het blendTrans filter niet ondersteund, en een beetje brakke foutmeldingen geeft af en toe.

Intentionally left blank


  • r0bert
  • Registratie: September 2001
  • Laatst online: 11-08 16:19
code:
1
eval(layerName + '.style.filter="blendTrans(duration=' + newDur + ')"');

spuugt dit uit:
code:
1
[layerName].style.filter = "blendTrans(duration = [newDur])"

volgens mij mist er dan nog een ';' op het eind, maar het zou idd goed kunnen dat het hier helemaal niet aan ligt.. leek me alleen wel zo netjes om even te veranderen.. Volgens mij is er vorige week ofzo een topic over hetzelfde scriptje geweest ..

/edit: wat gebeurd hier eigenlijk ?
en wat betekenen sp_docObj & sp_see ?
code:
1
eval('(' + sp_docObj + '["' + layerName + '"]' + sp_see + ')');

  • r0bert
  • Registratie: September 2001
  • Laatst online: 11-08 16:19
Hmm xal 't scriptje eens stap voor stap doorlopen want ik snap dér geen biet van:

om te beginnen klik je op dat input geval dat dezelfde id heeft als de div :? ok..

dan stuurt de waarde '14' als variabele curLay de functie hideLays in. Vervolgens gaat een loop controleren of die waarde overeenkomt met een van de waardes uit de array 'layArray[index]'

ok, dat matched dus niet dus gaan we verder naar "if (ie4 == 'yes')". Dat heb ik in het scriptje op 'yes' gezet dus belanden we in de functie 'fadeInOut()' met als waarde voor layerName de string 14, showHide = 'visible' en dur = 2

newDur wordt 2 * 1.0 = 2
code:
1
eval(layerName + '.style.filter="blendTrans(duration=' + newDur + ')"');

spuugt 14.style.filter="blendTrans(duration = 2)" uit
code:
1
var curStat = eval(layerName + '.filters.blendTrans.status');

spuugt 14.filters.blendTrans.status uit wat wordt geinterpreteerd ofzoiets :P als de status van het filter effect ( = curStat)

verder >> als curStatus niet gelijk is aan dur krijgen we dit resultaat
code:
1
2
3
        14.filters.blendTrans.apply()
        14.style.visibility="visible"
        14.filters.blendTrans.play()

'14' is
- en geen object maar een string. Hij zal de style dus niet kunnen vinden..
- 14 is de name van zowel de div en een input-radio geval
- achter al de eval resultaten horen volgens mij ';'tjes..

als je vervolgens nog een keer op die radioButton klikt, krijg je weer hetzelfde verhaaltje ..

* r0bert krijgt het idee dat OF hij het niet snapt :) of er beetje boel foutjes in het script zitten ..

  • Clay
  • Registratie: Oktober 1999
  • Laatst online: 22-06 13:51

Clay

cookie erbij?

variabelenamen mogen niet met getallen beginnen :{

Instagram | Flickr | "Let my music become battle cries" - Frédéric Chopin


  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

als de id van die div inderdaad '14' is kan ik me voorstellen dat het misgaat: id's mogen namelijk niet met een cijfer beginnen!

Intentionally left blank


  • r0bert
  • Registratie: September 2001
  • Laatst online: 11-08 16:19
Maar er bestaat toch ook helemaal geen div die id '14' heeft? alleen 'a10' ?

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 29-08 19:47

Bosmonster

*zucht*

achter al de eval resultaten horen volgens mij ';'tjes..
Maakt niks uit.

Nu is Eval toch al superlelijk en alleen mogelijk doordat het toevallig een scripttaal is die nog geinterpreteerd moet worden.

Het is ook helemaal niet nodig, ook niet hier, als je gewoon met de handles werkt zoals het hoort.. toch?

Verwijderd

Topicstarter
Ik heb voor de gemakkelijkheid ff een gedeelte uit de layArray array gelaten, het zijn in totaal 112 waarden en dat verne*kt de lay-out een beetje ;)

Maar ik zal even kijken het zou kunnen dat de functie alleen een getal oproept en geen a met een getal, want ik weet ook dat als je de var naam alleen uit een getal laat bestaan dat ie het niet doet, vandaar die a ervoor :)
Pagina: 1