Vraag & Antwoord

Webprogrammeren & scripting

javascript menu probleem

Anoniem
TomTimmerman
5 antwoorden
  • function buildDiv() {
    var linkje = 'een link naar een pagina'
    var id = 446533333

    var divElem = parent.mainFrame.document.createElement("div")
    divElem.id = 1
    divElem.style.visibility = 'hidden'
    parent.mainFrame.document.body.appendChild(divElem)

    source='<table>'
    source+='<tr>'
    source+='<td onmouseover=showMenu("' + id + '")><a href="www.website.com">' + linkje + '</a></td>'
    source+='</tr>'
    source+='</table>'

    parent.mainFrame.document.getElementById('1').innerHTML = source
    }


    Ik heb hier deze functie en bij een mouse over van de td kan hij de functie showMenu niet openen.
    Hij geeft aan dat hij een object verwacht, maar hij moet gewoon een string hebben. Als ik de functie
    aanroep vanuit mijn hoofdprogramma gaat het wel goed. En als ik showMenu vervang door alert dan alert
    hij ook gewoon het id.

    Weet iemand hoe ik dit probleem kan oplossen?
  • Heb je een voorbeeld online?
  • De foutmelding die je krijgt betekent hoogstwaarschijnlijk niet dat je functie een object verwacht, maar dat de functie niet gevonden kan worden.

    Wordt de functie toevallig in een andere pagina gedeclareerd (omdat je het over je "hoofdprogramma" hebt)? Zo ja, dan zal je voor je functie aanroep een reference naar dat window moeten zetten, bijv: [i:c28e28a1d9]parent.showMenu('1')[/i:c28e28a1d9].
  • ik heb helaas geen voorbeeld online.
    Mijn functie die hij aanroept staat in het zelfde programma, als ik de aanroep showMenu('1') gewoon onderaan mijn functie buildDiv zet dan roep hij de functie ook wel goed aan.
  • Vanuit de buildDiv() functie zal de aanroep werken aangezien je daar dus in dezelfde window scope zit. Alleen als ik je code een beetje goed begrijp worden de tables weggeschreven in een ander window. De event en dus de aanroep van je functie vinden dus ook plaats in dat window. En dus zal je in de eventhandler de verwijzing naar de functie moeten uitbreiden met een window reference.

    M.a.w.
    source+='<td onmouseover=parent.[b:e00bb3d750]FRAME[/b:e00bb3d750].showMenu("' + id + '")><a href="www.website.com">' + linkje + '</a></td>';

    Waarbij FRAME de framenaam is waarin je buildDiv() staat.


    Overigens raad ik aan om parameters altijd te omsluiten met quotes, dus:
    source+="<td onmouseover="parent.[b:e00bb3d750]FRAME[/b:e00bb3d750].showMenu('" + id + "')><a href="www.website.com">" + linkje + "</a></td>";

Beantwoord deze vraag

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

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