Toon posts:

[JS] if regel met een dubbele document.writeln

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik ben bezig met een voorraadindicatie op een website. Er is nu al een scriptje aanwezig wat de voorraad uit magazijn 1 haalt. De code is als volgt:
code:
1
2
3
4
5
6
    <script>
    VR = <#ITEMFIELD magazijn_1>;
    if (VR <= 0) {
       document.writeln ("<a onMouseOver=\" window.status='Klik hier voor meer info.'; return true\" onMouseOut=\"window.status=' '; return true\" href='situatieA.htm'>[img]'situatieA.jpg'[/img]</a></p>")
    }
    </script>


<#ITEMFIELD magazijn_1> --> dit is een TAG waarin het voorraadgetal verschijnt vanuit de database. Indien er 32 artikelen op voorraad zijn verschijnt er dus in de html pagina:

VR = 32

Dat werkt allemaal prima, maar nu is het de bedoeling dat er wordt gekeken naar twee magazijnen.

Als het op voorraad (een getal groter dan 0) is in magazijn 1 is de levertijd normaal dus verschijnt er niets. Als het getal 0 is (en dus niet op voorraad) moet er eigenlijk gekeken worden naar de voorraad in magazijn 2. Als het artikel bij magazijn 2 wel op voorraad is (en dus een getal groter dan 0 geeft) verschijnt de tekst: "levertijd 10 dagen". Als magazijn 2 het getal 0 geeft (dus is het ook niet op voorraad) dan verschijnt de tekst: "Niet op voorraad".

Kort samengevat:
 Magazijn 1Magazijn 2afbeelding die verschijnt 
Als00afbeeldingA.jpg(niet op voorraad)
Als01 (of groter dan 0)afbeeldingB.jpg(Levertijd 10 dagen)
Als1 (of groter dan 0)nvtafbeeldingC.jpg(artikel is op voorraad)


Nu heb ik geprobeerd om het als volgt op te lossen, maar helaas was het scriptje niet meer. Ik weet ook niet of het wel mogelijk is om twee document.writelns te gebruiken in 1 script. Niet op deze manier in elk geval.

code:
1
2
3
4
5
6
    <script>
    VR1 = <#ITEMFIELD magazijn_1>;
    if (VR1 <= 0) {
       document.writeln ("VR2 = <#ITEMFIELD magazijn_2>; if (VR2 <= 0) {document.writeln ("<a onMouseOver=\" window.status='Klik hier voor meer info.'; return true\" onMouseOut=\"window.status=' '; return true\" href='situatieA.htm'>[img]'situatieB.jpg'[/img]</a></p>")<a onMouseOver=\" window.status='Klik hier voor meer infoB.'; return true\" onMouseOut=\"window.status=' '; return true\" href='situatieA.htm'>[img]'situatieA.jpg'[/img]</a></p>")
    }
    </script>


Weet iemand of het wel kan op deze manier of in welke richting ik dit voor mekaar kan krijgen? Helaas bracht het zoeken op document.writeln en dubbele document.writeln me niets concreets op.

[ Voor 12% gewijzigd door Verwijderd op 14-12-2004 23:09 ]


  • watzie
  • Registratie: Juni 2001
  • Laatst online: 16-05 15:09
code:
1
2
3
4
5
6
    <script>
    VR1 = <#ITEMFIELD magazijn_1>;
    if (VR1 <= 0) {
       document.writeln ("VR2 = <#ITEMFIELD magazijn_2>; if (VR2 <= 0) {document.writeln ("<a onMouseOver=\" window.status='Klik hier voor meer info.'; return true\" onMouseOut=\"window.status=' '; return true\" href='situatieA.htm'>[img]'situatieB.jpg'[/img]</a></p>")<a onMouseOver=\" window.status='Klik hier voor meer infoB.'; return true\" onMouseOut=\"window.status=' '; return true\" href='situatieA.htm'>[img]'situatieA.jpg'[/img]</a></p>")
    }
    </script>
Volgens mij ben je nu iets te happy serverside en clientside scripting aan het mixen.
Waarom probjeer je het niet zo:
code:
1
2
3
4
5
6
7
    <script>
    VR1 = <#ITEMFIELD magazijn_1>;
    VR2 = <#ITEMFIELD magazijn_2>;
    if (VR1 <= 0) {
       if (VR2 <= 0) {document.writeln ("<a onMouseOver=\" window.status='Klik hier voor meer info.'; return true\" onMouseOut=\"window.status=' '; return true\" href='situatieA.htm'>[img]'situatieB.jpg'[/img]</a></p>")<a onMouseOver=\" window.status='Klik hier voor meer infoB.'; return true\" onMouseOut=\"window.status=' '; return true\" href='situatieA.htm'>[img]'situatieA.jpg'[/img]</a></p>");}
    }
    </script>

Verwijderd

Topicstarter
Het ruimt de code in elk geval even flink op, netjes. Maar ik mis de situatie C, die komt in heel de code niet meer voor, en verschijnt dus ook niet. Is dat erin te combineren? Of is het script daarvoor niet geschikt of geschikt te maken?

  • Woudloper
  • Registratie: November 2001
  • Niet online

Woudloper

« - _ - »

Verwijderd schreef op woensdag 15 december 2004 @ 10:30:
Het ruimt de code in elk geval even flink op, netjes. Maar ik mis de situatie C, die komt in heel de code niet meer voor, en verschijnt dus ook niet. Is dat erin te combineren? Of is het script daarvoor niet geschikt of geschikt te maken?
Dat je situatie C mist heeft niets met de oplossing te maken. Er wordt binnen GoT vanuit gegaan dat je aan de hand van de aangereikte suggesties toch zelf de rest zou kunnen verzinnen.

Om je andere vraag te beantwoorden. Ja dat is de combineren. Wellicht is het misschien nog handiger om ook nog wat leeswerk te doen over javascript e.d. (bijvoorbeeld bij: W3 School).

Verwijderd

Topicstarter
Bedankt voor je hint. Na een ochtend flink rommelen heb ik dit in elkaar gezet:

code:
1
2
3
4
5
6
7
8
9
10
11
<script>
VR1 = <#ITEMFIELD voorraad>;
VR2 = <#ITEMFIELD voorraad2>;
if (VR1 > 0) {document.writeln ("<a onMouseOver=\" window.status='Artikel is op voorraad in magazijn 1.'; return true\" onMouseOut=\"window.status=' '; return true\" href='situatieC.htm'>[img]'situatieC.jpg'[/img]</a></p>")
}
else
{
if (VR2 > 0) {document.writeln ("<a onMouseOver=\" window.status='Artikel is op voorraad in magazijn 2, dus levertijd is 10 dagen.'; return true\" onMouseOut=\"window.status=' '; return true\" href='situatieB.htm'>[img]'situatieB.jpg'[/img]</a></p>")
if (VR2 <= 0) {document.writeln ("<a onMouseOver=\" window.status='Artikel is niet op voorraad in magazijn 1 en 2.'; return true\" onMouseOut=\"window.status=' '; return true\" href='situatieA.htm'>[img]'situatieA.jpg'[/img]</a></p>")
}
</script>


Is dit een juiste code of klopt dit voor geen meter? Is het misschien omslachtig en kan het veel korter?

[ Voor 20% gewijzigd door Verwijderd op 15-12-2004 11:59 ]


  • watzie
  • Registratie: Juni 2001
  • Laatst online: 16-05 15:09
Da's an sich wel goed. Ik zou wel het if bla <0 if bla >= 0 vervangen door if bla<0 else.
Let op, zowel in je allereerste stukje code als in het laatste, lijk je steeds de sluit curly brace }
te vergeten. Dat gaat je een runtime error opleveren.
Mijn advies, ik stel het mijn werknemers verplicht maar voor jou noem ik het een tip ;),
doe zonder uitzondering nooit code achter een { (opening brace).
Ga altijd naar een volgende regel en typ daar pas je code. Dan valt het veel meer op als je
per ongeluk de } vergeet. In java gaat de compiler nog wel piepen, maar in javascript merk je het pas runtime en kan het lang zoeken zijn voor je zo'n vage syntax fout opmerkt. Met een beetje discipline voorkom je meestal 90% van de programmeerfouten :7

  • Pelle
  • Registratie: Januari 2001
  • Laatst online: 15:06

Pelle

🚴‍♂️

Zoiets zou ik er dan van maken:

Java:
1
2
3
4
5
6
7
8
9
10
11
12
VR1 = <#ITEMFIELD voorraad>;
VR2 = <#ITEMFIELD voorraad2>;

if (VR1 > 0) {
    document.writeln ('<a onMouseOver="window.status=\'Artikel is op voorraad in magazijn 1.\'; return true" onMouseOut="window.status=\'\'; return true" href="situatieC.htm"><img border="0" src="situatieC.jpg" alt="Artikel is op voorraad in magazijn 1."></a></p>');
} else {
    if (VR2 > 0) {
        document.writeln ('<a onMouseOver="window.status=\'Artikel is op voorraad in magazijn 2, dus levertijd is 10 dagen.\'; return true" onMouseOut="window.status=\'\'; return true" href="situatieB.htm"><img border="0" src="situatieB.jpg" alt="Artikel is op voorraad in magazijn 2, dus levertijd is 10 dagen."></a></p>');
    } else {
        document.writeln ('<a onMouseOver="window.status=\'Artikel is niet op voorraad in magazijn 1 en 2.\'; return true" onMouseOut="window.status=\'\'; return true" href="situatieA.htm"><img border="0" src="situatieA.jpg" alt="Artikel is niet op voorraad in magazijn 1 en 2."></a></p>');
    }
}

Verwijderd

Topicstarter
Perfect! Pelle bedankt! Ik had de code alweer iets gewijzigd met de haakjes maar weer gaf hij een foutmelding. De Pelle-code werkt uitmuntend.

Nogmaals bedankt voor jullie hulp!

  • thomaske
  • Registratie: Juni 2000
  • Laatst online: 08-05 12:49

thomaske

» » » » » »

Nog een andere mogelijkheid:

Java:
1
2
3
4
5
6
7
8
9
10
11
var msg = [];
msg['A'] = 'Artikel is op voorraad in magazijn 1.';
msg['B'] = 'Artikel is op voorraad in magazijn 2, dus levertijd is 10 dagen.';
msg['C'] = 'Artikel is niet op voorraad in magazijn 1 en 2.';

VR1 = <#ITEMFIELD voorraad>;
VR2 = <#ITEMFIELD voorraad2>;

state = (VR1 > 0) ? 'C' : ((VR2 > 0) ? 'B' : 'A');

document.writeln ('<a onMouseOver="window.status=\''+msg[state]+'\'; return true" onMouseOut="window.status=\'\'; return true" href="situatie'+state+'.htm">[img]"situatie'+state+'.jpg"[/img]</a></p>');


:P

Brusselmans: "Continuïteit bestaat niet, tenzij in zinloze vorm. Iets wat continu is, is obsessief, dus ziekelijk, dus oninteressant, dus zinloos."


  • watzie
  • Registratie: Juni 2001
  • Laatst online: 16-05 15:09
thomaske schreef op woensdag 15 december 2004 @ 13:21:
Nog een andere mogelijkheid:

Java:
1
2
3
4
5
6
7
8
9
10
11
var msg = [];
msg['A'] = 'Artikel is op voorraad in magazijn 1.';
msg['B'] = 'Artikel is op voorraad in magazijn 2, dus levertijd is 10 dagen.';
msg['C'] = 'Artikel is niet op voorraad in magazijn 1 en 2.';

VR1 = <#ITEMFIELD voorraad>;
VR2 = <#ITEMFIELD voorraad2>;

state = (VR1 > 0) ? 'C' : ((VR2 > 0) ? 'B' : 'A');

document.writeln ('<a onMouseOver="window.status=\''+msg[state]+'\'; return true" onMouseOut="window.status=\'\'; return true" href="situatie'+state+'.htm">[img]"situatie'+state+'.jpg"[/img]</a></p>');


:P
Om de eens of andere reden denk ik dat een dubbele ternaire expressie het voor Karper niet echt makkelijker maakt B)

[ Voor 20% gewijzigd door watzie op 15-12-2004 14:03 . Reden: naam type foutje ]


Verwijderd

Topicstarter
Ik prefereer idd de eerste manier, die werkt en ik snap het ook nog. Dus. Maar toch bedankt u allen!

Verwijderd

Topicstarter
Er is een vervolg probleem gekomen!

In een JS bestand (kassa.js) staan een aantal onderdelen die een winkelmandje weergeven. Een regel uit die kassa.js is als volgt:

code:
1
 if (Items[i].link <= 0) document.writeln("<tr><td><font face=Verdana size=2 color='#FF0000'><small>Let op: niet op voorraad</small></font></td></tr>");

Dit werkte in de oude situatie prima maar nu is een magazijn bijgekomen (lees bovenstaande) en dus moet dit stukje uitgebreid worden.

De code wat de voorraadafbeelding bepaald ziet er zo uit en dat werkt perfect:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<script>
VR1 = <#ITEMFIELD voorraad>; 
VR2 = <#ITEMFIELD voorraad2>; 

if (VR1 > 0) { 
    document.writeln ('[img]"../../../../../shop/voorwaarden/artikel_op_voorraad.jpg"[/img]'); 
} else { 
    if (VR2 > 0) { 
        document.writeln ('<BR><BR><table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="600" id="AutoNumber6"><tr><td width="10">&nbsp;</td><td width="590"><p><p>[img]"../../../../../shop/voorwaarden/artikel_langere_levertijd_logo.jpg"><font[/img]Het artikel, <#ITEMFIELD ArtikelNaam>, is op voorraad, maar heeft een langere levertijd. <a onMouseOver="window.status=\'Klik hier voor meer informatie over de afhandeling van uw bestelling indien de levertijd langer is.\'; return true" onMouseOut="window.status=\'\'; return true" target="_blank" href="../../../../../shop/voorwaarden/voorraadindicatie.htm#2" title="Klik hier voor meer informatie over de afhandeling van uw bestelling indien de levertijd langer is.">Klik hier</a> voor meer informatie.</font></p></p></td></tr></table>');
    } else { 
        document.writeln ('<BR><BR><table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="600" id="AutoNumber6"><tr><td width="10">&nbsp;</td><td width="590"><p><p>[img]"../../../../../shop/voorwaarden/artikel_niet_op_voorraad_logo.jpg"><font[/img]Helaas is momenteel het artikel, <#ITEMFIELD ArtikelNaam>, niet op voorraad. Hierdoor kan de levertijd afwijken. <a onMouseOver="window.status=\'Klik hier voor meer informatie over de afhandeling van uw bestelling indien een artikel niet op voorraad is.\'; return true" onMouseOut="window.status=\'\'; return true" target="_blank" href="../../../../../shop/voorwaarden/voorraadindicatie.htm#1" title="Klik hier voor meer informatie over de afhandeling van uw bestelling indien een artikel niet op voorraad is.">Klik hier</a> voor meer informatie.</font></p></p></td></tr></table>');
    } 
}
</script>


Nu moet ik bovenstaand stuk code in de kassa.js verwerken zodat het werkt. Het tekstje "Let op: niet op voorraad" wordt daarvoor vervangen.

Dit is wat ik heb geprobeerd:

code:
1
2
3
4
5
if (Items[i].link VR1 > 0) document.writeln('[img]"../../../../../shop/voorwaarden/artikel_op_voorraad.jpg"[/img]');
} else { 
if (Items[i].link VR2 > 0) document.writeln('<BR><BR><table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="600" id="AutoNumber6"><tr><td width="10">&nbsp;</td><td width="590"><p><p>[img]"../../../../../shop/voorwaarden/artikel_langere_levertijd_logo.jpg"><font[/img]Het artikel, <#ITEMFIELD ArtikelNaam>, is op voorraad, maar heeft een langere levertijd. <a onMouseOver="window.status=\'Klik hier voor meer informatie over de afhandeling van uw bestelling indien de levertijd langer is.\'; return true" onMouseOut="window.status=\'\'; return true" target="_blank" href="../../../../../shop/voorwaarden/voorraadindicatie.htm#2" title="Klik hier voor meer informatie over de afhandeling van uw bestelling indien de levertijd langer is.">Klik hier</a> voor meer informatie.</font></p></p></td></tr></table>');
    } else { 
document.writeln('<BR><BR><table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="600" id="AutoNumber6"><tr><td width="10">&nbsp;</td><td width="590"><p><p>[img]"../../../../../shop/voorwaarden/artikel_niet_op_voorraad_logo.jpg"><font[/img]Helaas is momenteel het artikel, <#ITEMFIELD ArtikelNaam>, niet op voorraad. Hierdoor kan de levertijd afwijken. <a onMouseOver="window.status=\'Klik hier voor meer informatie over de afhandeling van uw bestelling indien een artikel niet op voorraad is.\'; return true" onMouseOut="window.status=\'\'; return true" target="_blank" href="../../../../../shop/voorwaarden/voorraadindicatie.htm#1" title="Klik hier voor meer informatie over de afhandeling van uw bestelling indien een artikel niet op voorraad is.">Klik hier</a> voor meer informatie.</font></p></p></td></tr></table>");


Zoals jullie kunnen zien mist nu het stukje van:
code:
1
2
VR1 = <#ITEMFIELD voorraad>; 
VR2 = <#ITEMFIELD voorraad2>;


Zou dat wat uitmaken? Ik denk het niet, want zover ik het begrijp neemt ie de voorraad mee uit de pagina waar het artikel opstaat. En is het wel mogelijk dat ik het op deze manier aanpas?

Verwijderd

Topicstarter
Is er misschien iemand die het "vervolg balletje" kan laten rollen? _/-\o_
Pagina: 1