Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[JS] numerieke waarde komt niet mee in functie

Pagina: 1
Acties:

  • Freemann
  • Registratie: Januari 2002
  • Niet online

Freemann

CO2 Warmtepomp + VentilatieWTW

Topicstarter
ben bezig met een ajax script dat een "mandje" ophaalt uit de DB. Dit mandje bevat producten en bij die producten kunnen vragen hangen. Nu laat ik die weergeven in een dynamich JS tabel.

Het mandje is ook een JS tabel die ik in een DIV laad. Nu zit ik met het probleem dat een numerieke waarde niet doorkomt naar de volgende functie.

De query van het mandje geeft dit terug aan de xhr.responseText
code:
1
53,lulletje,2,Standaard ICT middelen,;;

De regel split ik op de "," voor de kolommen en ";;" voor de records.

cell_vulling[0] bevat dan ook het Record_id en deze wil ik doorgeven op regel 6 en 7 maar dat lukt niet. regel 2 geeft netjes in een alert het id weer. Als ik "tijdelijk" als var mee geef aan de functie dan krijg ShowContent niks. Als ik "waarde" mee geef dan krijgt ShowContent "--" mee.

Heb op het forum gelezen dat je ID's niet met getallen mag beginnen en vandaar de "-"tjes maar dat werkt ook niet... snap er niks meer van .... Het getal komt dus gewoon niet mee..

JavaScript:
1
2
3
4
5
6
7
tijdelijk = cell_vulling[0];
alert(tijdelijk);
waarde = "-"+tijdelijk+"-";
if (cell_vulling[4] != "" ){
     ooCell[3].onmouseover = function (){ ShowContent("oTableContainer",waarde);}
     ooCell[3].onmouseout = function (){ HideContent("oTableContainer",waarde);}
}

https://www.taltion.nl, https://www.trekhaakkoffer-huren.nl, https://www.fietsendrager-huren.nl, https://www.fietskar-huren.nl


  • BasieP
  • Registratie: Oktober 2000
  • Laatst online: 19-10 08:18
met regel 6 en 7 bedoel je neem ik aan regel 5 en 6?

JS weet niet wat een 'id' is. een getal is gewoon een getal, en die zou gewoon doorgegeven moeten worden (ook negatief).
Wanneer jij "-" + tijdelijk + "-" doet, maar je er gewoon een string van, en ook die zou gewoon doorgegeven moeten worden.


edit:
stom dat ik het nu pas zie:

je declareerd 'tijdelijk' in deze functie.
Je maakt een nieuwe functie aan (onmouseout = function() { ... } ) waarin 'tijdelijk' (en waarde) niet gedeclareerd zijn. (dus "")

Kortom, twee mogelijkheden:
1: declareer globaal. Doe dit maar niet, want dan moet je voor elke cell een apparte var declareren (of 1 array natuurlijk)

2: zorgen dat je de waarde meegeeft naar die functie. Dit is opzich vrij lastig maar daar zijn truukjes voor.
Je kunt namelijk zoiets doen:

JavaScript:
1
2
3
4
5
6
var tijdelijk = cell_vulling[0];
if (cell_vulling[4] != "") {
     ooCell[3].tijdelijk = tijdelijk;
     ooCell[3].onmouseover = function () { ShowContent("oTableContainer", this.tijdelijk); }
     ooCell[3].onmouseout = function () { HideContent("oTableContainer", this.tijdelijk); }
}

(let ff op dat ik 'var' heb toegevoegd. IE6 wil daar nog wel eens mee bokken)

[ Voor 64% gewijzigd door BasieP op 10-09-2007 11:47 ]

This message was sent on 100% recyclable electrons.


  • Freemann
  • Registratie: Januari 2002
  • Niet online

Freemann

CO2 Warmtepomp + VentilatieWTW

Topicstarter
voke ik heb hem geprobeerd aan te passen aan de hand van je opmerkingen. Nu krijg ik alleen van ShowContent dat "new_decl" undefined is...

JavaScript:
1
2
3
4
5
6
7
8
9
10
11
var tijdelijk = cell_vulling[0];                //is een numerieke waarde
if (cell_vulling[4] != "" ){                //er moet een vraag zijn maak daarom de mouse over/out aan
    ooCell[3].onmouseover = function (tijdelijk){       //maak over aan
    var new_decl = tijdelijk                            //declareer "new_decl"
    ShowContent('oTableContainer',new_decl);        //zet functie
    }
    ooCell[3].onmouseout = function (tijdelijk){    //maak over aan
        var new_decl = tijdelijk                    //declareer "new_decl"
        ShowContent('oTableContainer',new_decl);        //zet functie
    }
}

edit:

oeps je hebt je post aangepast :) ik ga weer ff kijken :)



Goed hij werkt!!

Had ook al met This.xxxx zitten knoeien maar blijkbaar had ik dat toch nog niet goed gedaan :(

Thanx _/-\o_

[ Voor 12% gewijzigd door Freemann op 10-09-2007 11:56 ]

https://www.taltion.nl, https://www.trekhaakkoffer-huren.nl, https://www.fietsendrager-huren.nl, https://www.fietskar-huren.nl


  • frickY
  • Registratie: Juli 2001
  • Laatst online: 27-11 09:24
BasieP schreef op maandag 10 september 2007 @ 11:40:
2: zorgen dat je de waarde meegeeft naar die functie. Dit is opzich vrij lastig maar daar zijn truukjes voor.
Je kunt namelijk zoiets doen:

JavaScript:
1
2
3
4
5
6
var tijdelijk = cell_vulling[0];
if (cell_vulling[4] != "") {
     ooCell[3].tijdelijk = tijdelijk;
     ooCell[3].onmouseover = function () { ShowContent("oTableContainer", this.tijdelijk); }
     ooCell[3].onmouseout = function () { HideContent("oTableContainer", this.tijdelijk); }
}

(let ff op dat ik 'var' heb toegevoegd. IE6 wil daar nog wel eens mee bokken)
Ik doe het zelf altijd zo;
JavaScript:
1
     ooCell[3].onmouseover = new Function ("ShowContent(\"oTableContainer\", " + this.tijdelijk + ");");


Dan heb je geen 'vieze' containers nodig.

  • BasieP
  • Registratie: Oktober 2000
  • Laatst online: 19-10 08:18
frickY schreef op maandag 10 september 2007 @ 12:26:
[...]

Ik doe het zelf altijd zo;
JavaScript:
1
     ooCell[3].onmouseover = new Function ("ShowContent(\"oTableContainer\", " + this.tijdelijk + ");");


Dan heb je geen 'vieze' containers nodig.
true, eval is veeeeel netter :X ;)

This message was sent on 100% recyclable electrons.