event handlers toevoegen op createElement

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Young Roger

Young Roger

16/07/2008 21:49:00
Quote Anchor link
Met het onderstaande script wil ik een strook afbeeldingen krijgen (knoppen van een menu) en hierbij de evenhandlers: onclick, onmouseover, onmouseout genereren. Nu doet hij dit perfect in FF (as always) maar IE7 wil niet zo meewerken, iemand ideeën waar de fout zit?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
48
49
50
51
52
53
54
55
56
57
58
59

// genereer alle 6 menu items, plaatjes
function makeMenuItems()
{
    var i;
    for (i = 1; i < 7; i++)
    {
        var tempImgSrc = '../images/menu/images/menu_item_0' + i + '.gif';
        var tempImgID = 'menu_' + i;
        var tempContainerID = 'imageContainer';
        createImage(tempContainerID, tempImgSrc, tempImgID);    
    }
}

// maak nieuwe plaatjes aan en zet ze in de betreffende container
function createImage(containerID, imageSource, imageID)
{
    var tempImage = document.createElement('img');
        tempImage.setAttribute('src', imageSource);
        tempImage.setAttribute('id', imageID);
        tempImage.setAttribute('onclick','changeOnClick(this.id);');
        tempImage.setAttribute('onmouseover','changeOnMouseOver(this.id);');
        tempImage.setAttribute('onmouseout','changeOnMouseOut(this.id);');
    var imageContainer = document.getElementById(containerID);
    imageContainer.appendChild(tempImage);
}

// verkrijg het nummer dat in het id verborgen zit, vb: menu_1
function getImageNumber(imageId)
{
    var getImage = document.getElementById(imageId);
    var menuIndex = imageId.indexOf('menu_') + 5;
    var imageNumber = imageId.substring(menuIndex, (menuIndex + 1));
    
    return imageNumber;
}

// verander de src van het plaatje op de onClick event handler
function changeOnClick(imageId)
{        
        var getImage = document.getElementById(imageId);
        getImage.src = '../images/menu/images/menu_item_OC_0' + getImageNumber(imageId) + '.gif';  
}

// verander de src van het plaatje op de onMouseOver event handler
function changeOnMouseOver(imageId)
{        
        var getImage = document.getElementById(imageId);
        getImage.src = '../images/menu/images/menu_item_mo_0' + getImageNumber(imageId) + '.gif';  
}

// verander de src van het plaatje op de onMouseOut event handler, weer terug naar het orginele plaatje.
function changeOnMouseOut(imageId)
{        
        var getImage = document.getElementById(imageId);
        getImage.src = '../images/menu/images/menu_item_0' + getImageNumber(imageId) + '.gif';  
}
    
window.onload=makeMenuItems;
 
PHP hulp

PHP hulp

21/11/2024 21:18:25
 
Jelmer -

Jelmer -

16/07/2008 23:05:00
Quote Anchor link
setAttribute in Internet Explorer evalueert de waarden niet. Je element krijgt wel een attribuut, maar de browser vangt intern niet de attribuut-waarden af. Je hebt er in IE dus eigenlijk niet veel aan.

Events zou ik trouwens altijd direct via Javascript toevoegen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
var tempImage = document.createElement('img');
tempImage.onmouseover = changeOnMouseOver;

// en dan ook even changeOnMouseOver veranderen in:
function changeOnMouseOver(e) {
   if(window.event) e = window.event;
   var getImage = e.target || e.srcElement; // target = FF, W3C en srcElement = IE
   getImage.src = 'anders.png';
}
 
Young Roger

Young Roger

17/07/2008 12:50:00
Quote Anchor link
Ok bedankt, setAttribute wordt dus wel toegevoegd, maar niet uitgelezen door IE. Het andere zal ik ook even bijwerken, als ik nog op problemen stuit laat ik nog wel van me horen..
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.