13 berichten aan het bekijken - 1 tot 13 (van in totaal 13)
  • Q:
    Bijdrager
    Jakko Westerbeke

    onmouseover/javascript probleem

    Een probleem waar ik niet uit kom: ik heb een Javascriptfunctietje geschreven om afbeeldingen te veranderen als de muis over de afbeelding gaat:
    [code:1:6d6820a6c1]function veranderPlaatje(afbeeldingID, afbeeldingBestand) {
    window.document.images[afbeeldingID].src = afbeeldingBestand
    }[/code:1:6d6820a6c1]
    Deze functie bevindt zich in een apart bestand, scripts.js, dat ik in m’n HTML-bestand laad met
    [code:1:6d6820a6c1]<script src="scripts.js" type="text/javacript"></script>[/code:1:6d6820a6c1]in de <head> van het document.

    En dan volgt in het document deze HTML om een link van een afbeelding te maken:
    [code:1:6d6820a6c1]<a href="foo/bar.html" onmouseover="veranderPlaatje(’foo’, ‘bar.png’)" onmouseout="veranderPlaatje(’foo’, ‘foo.png’)"><img src="foo.png" width="72" height="72" alt="Foo" id="foo"/></a>[/code:1:6d6820a6c1]
    Dit werkt allemaal perfect in Safari, maar vertikt het in Firefox, wat als foutmelding geeft dat veranderPlaatje niet gedefinieerd is. In Opera werkt het ook niet, maar ik geloof niet dat je daar Javascript-foutmeldingen op kunt vragen, dus wat hij precies voor reden heeft weet ik niet.

    Maar waarom ik hier nu over begin, en waarom ik er niet uit komt, is omdat ik al jaren in feite precies dezelfde functie gebruik op verschillende sites, waar het altijd gewerkt heeft. Zelfs als ik die pagina’s laad in Firefox, veranderen de plaatjes als de muisaanwijzer eroverheen gaat. Maar deze keer weigert het pertinent, behalve in Safari …

    Wat ik al geprobeerd heb is om de functie in de HTML-pagina te zetten, binnen de <script> tags (waaruit ik ook nog eens de verwijzing naar scripts.js gehaald heb), maar dat verandert niks: Firefox geeft dezelfde foutmelding.

    Ik zou natuurlijk kunnen proberen om de code rechtstreeks uit zo’n oude pagina te halen en in de nieuwe te plakken, maar omdat die vaak een beetje een zooitje zijn leek het me beter om het netjes even opnieuw te doen … niet dus :/

    Heeft iemand een idee wat hier aan de hand is?

    Bijdrager
    iJoost

    Ik zie er niet zo heel veel mis mee. Gebruik van de images arary is een tikkeltje verouderd… Maar wat je mogelijk nekt is die “javacript” bij het includen van het js-bestand. Geef anders even een URL waar een en ander online te bewonderen is, dan kijk ik even of ik het zie.

    Bijdrager
    tw

    welke editor gebruik je?

    dreamweaver heeft een standaard imageswap behaviour, werkt prima in (volgens mij) alle browsers… preload ook automatisch

    Bijdrager
    klaus

    Ben niet helemaal zeker of dat iets uitmaakt, maar function calls in javascript moet je steeds eindigen met ;
    Het kan zijn dat Firefox daar een probleem van maakt.

    dus : onmouseout=”veranderPlaatje(‘foo’, ‘foo.png’);”>

    Bijdrager
    iJoost

    Nah… een ; om een statement af te sluiten is wel netjes maar in JavaScript optioneel. Dat kan het niet zijn. Ik hou het op die ontbrekende S. Dat zou ook de foutmelding verklaren “functie onbekend”. Die functie zat immers in die js-file.

    Bijdrager
    kaydie

    Probeer dit eens…
    [code:1:d1c3b9f8f6]function veranderPlaatje(afbeeldingID, afbeeldingBestand) {
    document.getElementById(afbeeldingID).src = afbeeldingBestand
    }[/code:1:d1c3b9f8f6]

    Bijdrager
    macpro

    Kaydie heeft gelijk.

    In jouw code ga je de mist in met de images array:
    [code:1:131fb18c6b]window.document.images[afbeeldingID].src = afbeeldingBestand[/code:1:131fb18c6b]

    Je geeft een ID mee van een object, terwijl je eigenlijk een array index mee moet geven.
    Schijnbaar zijn er browsers die het wel accepteren, maar die reageren dan eigenlijk fout.

    Bijdrager
    Jonnotie

    Als ik u was zou ik css gebruiken;)

    Bijdrager
    Jakko Westerbeke
    ”iJoost”

    Maar wat je mogelijk nekt is die “javacript” bij het includen van het js-bestand.

    Je hebt gelijk … ik had daar helemaal overheen gekeken, en moet toegeven dat ik het zelfs eerst niet doorhad toen ik je antwoord las — pas bij je tweede post, waarin je expliciet de missende S noemt, zag ik het:? Met de S erbij werkt het ook in Firefox, ja.

    ”xsight3″

    welke editor gebruik je?

    Teksteditor:)

    ”macpro”

    Je geeft een ID mee van een object, terwijl je eigenlijk een array index mee moet geven.
    Schijnbaar zijn er browsers die het wel accepteren, maar die reageren dan eigenlijk fout.

    Niet om het één of ander, maar volgens mij is het wel goed JS:

    ”ClientReferenceJS13.pdf”

    You can refer to the images in a document by using the images array. This array contains an entry for each Image object (IMG tag) in a document; the entries are in source order. Images created with the Image constructor are not included in the images array. For example, if a document contains three images whose NAME attributes are im1, im2, and im3, you can refer to the objects in the images array either as:
    document.images[“im1”]
    document.images[“im2”]
    document.images[“im3”]
    or as:
    document.images[0]
    document.images[1]
    document.images[2]

    Bijdrager
    kaydie
    ”Jakko

    Niet om het één of ander, maar volgens mij is het wel goed JS:

    ”ClientReferenceJS13.pdf”

    You can refer to the images in a document by using the images array. This array contains an entry for each Image object (IMG tag) in a document; the entries are in source order. Images created with the Image constructor are not included in the images array. For example, if a document contains three images whose NAME attributes are im1, im2, and im3, you can refer to the objects in the images array either as:
    document.images[“im1”]
    document.images[“im2”]
    document.images[“im3”]
    or as:
    document.images[0]
    document.images[1]
    document.images[2]

    Dan moet je wel een name attribute in je element toevoegen. De name attribute en de id attribute zijn twee verschillende dingen (al lijken ze wel erg op elkaar)…

    Bijdrager
    iJoost

    Los van het feit dat het dus niet het probleem was…;-)

    … Is de genoemde getElementById syntax wel aan te bevelen. De images array is echt helemaal uit het begin van wat toen nog DHTML heette. Maar hij werkt daarom wel overal. DOM 0 heet dat. Ach… als je een keer zin hebt zet je gewoon die getElementById er neer en dan ben je weer hardstikke “bij”.

    Bijdrager
    Jakko Westerbeke
    ”kaydie”

    Dan moet je wel een name attribute in je element toevoegen. De name attribute en de id attribute zijn twee verschillende dingen (al lijken ze wel erg op elkaar)…

    Ja en nee …:)

    ”HTML

    The id attribute has several roles in HTML:

    As a style sheet selector.
    As a target anchor for hypertext links.
    As a means to reference a particular element from a script.
    As the name of a declared OBJECT element.
    For general purpose processing by user agents (e.g. for identifying fields when extracting data from HTML pages into a database, translating HTML documents into other formats, etc.).

    en

    ”HTML

    The id and name attributes share the same name space. This means that they cannot both define an anchor with the same name in the same document. It is permissible to use both attributes to specify an element’s unique identifier for the following elements: A, APPLET, FORM, FRAME, IFRAME, IMG, and MAP. When both attributes are used on a single element, their values must be identical.

    Wat er, als je het mij vraagt, op neerkomt dat je id kunt gebruiken waar de oudere Javascript-documentatie het over name heeft.

    ”iJoost”

    De images array is echt helemaal uit het begin van wat toen nog DHTML heette. Maar hij werkt daarom wel overal. DOM 0 heet dat.

    Tja, ik weet het ook nog niet. Ik zie wel hoe ik het doe, zolang het maar werkt, hè;)

    Bijdrager
    kaydie
    ”Jakko

    Wat er, als je het mij vraagt, op neerkomt dat je id kunt gebruiken waar de oudere Javascript-documentatie het over name heeft.)

    Klopt idd. Zie ook de de W3C DOM2 HTML specs hier en hier.

13 berichten aan het bekijken - 1 tot 13 (van in totaal 13)

Je moet ingelogd zijn om een reactie op dit onderwerp te kunnen geven.