Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Webprogrammeren & scripting

Simpel Javascript vraagje.

Anoniem
Torrentus
4 antwoorden
  • Beste C!T'ers.

    Ik gebruik op 't moment een javascript om een willekeurige foto te laden op een webpagina. Stuk waar het om gaat:

    [code:1:b8e920a42e]
    document.write('<a id="ela" href='+'"'+imagelinks[ry]+'"'+'><img src="'+myimages[ry]+'" border=0'+ ></a>')
    [/code:1:b8e920a42e]

    Dat resulteert dus in:
    [code:1:b8e920a42e]
    <a id="ela" href="linkdiebijwillekeurigefotohoort.html"><img src="willekeurigefoto.jpg"></a>
    [/code:1:b8e920a42e]

    Maar ik wil het volgende graag bereiken:

    [code:1:b8e920a42e]
    <a id="ela" href="linkdiebijwillekeurigefotohoort.html"><img src="willekeurigefoto.jpg" style="opacity:0.4;filter:alpha(opacity=40)" onmouseover="this.style.opacity=1;this.filters.alpha.opacity=100" onmouseout="this.style.opacity=0.4;this.filters.alpha.opacity=40"></a>
    [/code:1:b8e920a42e]

    Hoe moet ik de javascript aanpassen zodat hij bovenstaande code genereerd? Gewoon erin plakken werkt niet –> Syntax fout. Vermoed dat dat met de " 'tjes te maken heeft, maar kom er niet uit.

    Alvast bedankt! :)

    Torrentus
  • Ik zou die onmouseover en onmouseouteffecten in een aparte functie plaatsen. Dan krijg je weer wat meer overzicht.

    Ook kan je dat laden van die url met bij behorende foto doen in de document on load. dus zo : [code:1:c7f3210943]document.onload = function(){

    //hier code om je dingen te doen
    }
    [/code:1:c7f3210943]

    Zo hou je mooi javascript en je html gescheiden.

    Een laatste tip, kijk eens naar het jquery framework, dat scheelt je veel problemen met javascript :)
  • Waarom doe je zo moeilijk door de style met javascript te definiëren? Gebruik de pseudo-class hover in je CSS en je bent klaar.
  • Naast het feit dat Ger een goede tip geeft, toch nog even wat over je JavaScript probleem. Heb je wel eens van escapen gehoord? Je kunt quotes die je niet als JavaScript-quote maar als string ergens wil neerzetten aangeven met een backslash ( \ ). Even een voorbeeld.[code:1:a626b9f862]document.write("Hij zei: "Je moet 10 auto's slopen!"");[/code:1:a626b9f862]Gaat dus niet werken… Het JavaScript denkt dat je na de tweede quote klaar bent met de string die je wilt outputten, en snapt dan niets van de rest. Dit los je zo op:[code:1:a626b9f862]document.write("Hij zei: \"Je moet 10 auto's slopen!\"");[/code:1:a626b9f862]Dit geeft wel het gewenste resultaat.

    Zoals je wellicht weet kun je strings in JavaScript ook met enkele quotes aangeven. Je krijgt dan zoiets:[code:1:a626b9f862]document.write('Hij zei: "Je moet 10 auto's slopen!"');[/code:1:a626b9f862]Maar je ziet meteen, dat dit ook niet goed gaat! Bij het woordje auto's komt een enkele quote voor, en dan gaat het script weer over zijn nek. Als je enkele quotes gebruikt om de string aan te geven, dan zul je dus de enkele quotes die je in de string wilt gebruiken moeten escapen. Zo dus:[code:1:a626b9f862]document.write('Hij zei: "Je moet 10 auto's slopen!"');[/code:1:a626b9f862]En dit geeft exact hetzelfde resultaat.

    Met deze kennis even jouw JavaScript regel werkend maken. Ik gebruik enkele quotes, omdat jij dat ook hebt gedaan, en dat is wel zo makkelijk, want er komen veel meer dubbele quotes in den string voor, dus dan hoef je er minder te escapen:[code:1:a626b9f862]document.write('<a id="ela" href="'+ imagelinks[ry] +'"><img src="'+ myiamges[ry] +'" style="opacity:0.4; filter:alpha(opacity=40)" onmouseover="this.style.opacity=1; this.filters.alpha.opacity=100" onmouseout="this.style.opacity=0.4; this.filters.alpha.opacity=40"></a>');[/code:1:a626b9f862]

    De foutmelding die je vervolgens krijgt heeft niets met het escapen of met de variabelen te maken, maar met this.filter dat niet door elke browser wordt herkend…

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.