[JS] Staar me blind op probleem, location.href?

Pagina: 1
Acties:

  • CrashOne
  • Registratie: Juli 2000
  • Niet online

CrashOne

oOoOoOoOoOoOoOoOoOo

Topicstarter
Wordt een beetje gek, ben aan het ASP'en en javscripten maar kom er niet uit......

JavaScript:
1
2
3
4
 function toCart(id, field){
    var aantal = document.forms['form' + field].elements['field'+field].value
    document.location.href = 'tomylist.asp?id=' + id + '&aantal=' + aantal;;
 }


wordt zo aangeroepen:
JavaScript:
1
onclick="javascript:toCart('<%= objcontact("uniekId") %>','<%= count %>')


Waarbij het asp gewoon waardes zijn.

Echter werkt de document.location.href niet.

Wat doe ik fout?

* CrashOne hoopt dat er nog iemand wakker is

Huur mij in als freelance SEO consultant!


  • Eskimootje
  • Registratie: Maart 2002
  • Laatst online: 09:48
1. Wat voor errors krijg je?
2. Wat is de uitgespuugde code die je krijgt bij het onclick event? Ziet dat er wel goed uit?

  • CrashOne
  • Registratie: Juli 2000
  • Niet online

CrashOne

oOoOoOoOoOoOoOoOoOo

Topicstarter
de uitgespuugde code is:
onclick="javascript:toCart('1','2')

Waarbij 1 en 2 tijd nummer zijn.

En ik krijg dus geen error.... :?

Lekker vaag....


edit:

In mozilla en opera werkt het dus wel, in IE6 dus niet....

edit:

nr.1:
k ga slapen, i'll check back later!

[ Voor 65% gewijzigd door CrashOne op 09-09-2003 02:57 . Reden: toevoeging. ]

Huur mij in als freelance SEO consultant!


  • Rataplan
  • Registratie: Oktober 2001
  • Niet online

Rataplan

per aspera ad astra

* Rataplan spreekt geen ASP

...maar je hebt geen sluitquotejes achter je onClick staan en er staat een ; teveel achter je document.location.href-assignment.

Standaard debuggen: vervang document.location.href= door een alert, controleer of het goede uri wordt gegenereerd. Dat blijkt het geval te zijn, wat leidt tot de volgende

[brainwave]

Voor locale url's worden door IE geen parameters via ? doorgegeven, dus zonder webserver is deze pagina niet te testen :)

Heb de hier gegeven code (met "onclick="javascript:toCart('1','2')") locaal getest (failure) en online gezet (succes).

[/brainwave]

Ben benieuwd :)


Journalism is printing what someone else does not want printed; everything else is public relations.


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 10:01

crisp

Devver

Pixelated

Het is document.URL (readonly) of window.location.href! En dat zou lokaal ook prima moeten werken.
Verder hoeft er in een event-handler geen javascript: te staan, en sluit je regels netjes af met een ;

[ Voor 3% gewijzigd door crisp op 09-09-2003 07:51 ]

Intentionally left blank


  • CrashOne
  • Registratie: Juli 2000
  • Niet online

CrashOne

oOoOoOoOoOoOoOoOoOo

Topicstarter
Had alles vannacht al uit ge alert, alles wordt goed mee gegeven. Draai het op een webserver dus das ook geen probleem.

Zoals hierboven al gezegt, het werkt in alle andere browsers.

Heb veel ingewikkeldere JS geschreven voor dit projectje, werkt allemaal en over al.

Maar goed, hab naar mijn idee alles geprobeert, zonder resultaat.

Huur mij in als freelance SEO consultant!


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 10:01

crisp

Devver

Pixelated

waarom submit je trouwens niet gewoon het form?

Intentionally left blank


  • Woudloper
  • Registratie: November 2001
  • Niet online

Woudloper

« - _ - »

CrashOne ::heb je Rataplan zijn suggestie (samen met die van crisp) al geprobeerd??

Dus:
JavaScript:
1
2
3
4
5
function toCart(id, field) {
    var aantal = document.forms['form' + field].elements['field' + field].value;

    window.location.href = 'tomylist.asp?id=' + id + '&aantal=' + aantal;
 }

  • beetle71
  • Registratie: Februari 2003
  • Laatst online: 21-08 17:05
Ik had laatst ongeveer eenzelfde probleem met IE.
Het probleem: Er stond nog een functiecall te wachten om uitgevoerd te worden...
* beetle71 vraagt zich of dit duidelijk is :-)
Het A element met de onClick handler stond in een TD met daarop ook een onClick handler..
De onclick op de A werd als 1e getriggerd (location.href wijziging) maar werd niet uitgevoerd omdat de onclick van de TR nog niet was uitgevoerd...

Overigens ook dit gaat fout:
HTML:
1
2
3
<a href="javascript:void(0);" onclick="window.location='http://www.cocacola.com';">
TEST
</a>


De functie binnen de href wordt NA de onclick uitgevoerd. En zolang er nog functies 'in de wacht' staan werkt de location href niet :?

  • CrashOne
  • Registratie: Juli 2000
  • Niet online

CrashOne

oOoOoOoOoOoOoOoOoOo

Topicstarter
@crisp & woudloper: heb ik idd al geprobeerd, levert dus niks op. Ga het idd maar via een form submit doen.

@beetle71: Vreemd of niet? Heb een zelfde funtie die verschillende frames set in een ander project gebruikt en dat werkte dus wel op deze manier.

Huur mij in als freelance SEO consultant!


  • beetle71
  • Registratie: Februari 2003
  • Laatst online: 21-08 17:05
CrashOne schreef op 09 september 2003 @ 09:25:

@beetle71: Vreemd of niet? Heb een zelfde funtie die verschillende frames set in een ander project gebruikt en dat werkte dus wel op deze manier.
Da's op zich niet vreemd, als er een ander frame mee refreshed voer je de window.location in principe uit in een ander window. (die verder dan geen functiecalls na de location aanroep meer heeft

Mijn voorbeeld eerder in dit topic gaat alleen op als je een window.location probeert uit te voeren op het 'huidige' window en er in datzelfde window nog een andere functioncall 'in de wacht' staat. bijv void(0);

  • RM-rf
  • Registratie: September 2000
  • Laatst online: 23:40

RM-rf

1 2 3 4 5 7 6 8 9

JavaScript:
1
2
3
4
function toCart(id, field){
   var aantal = document.forms['form'+field].elements['field'+field].value
   document.location.href = 'tomylist.asp?id=' + id + '&aantal=' + aantal;
}


klopt het dat je x aantal forms hebt staan met een naam met hierin een oplende waarde en hierin een element met diezelfde waarde:
dus

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<form name="form1"> 
   <input name="field1">
</form>
..
<form name="form2"> 
   <input name="field2">
</form>
..
<form name="form3"> 
   <input name="field3">
</form>
..
<form name="form4"> 
   <input name="field4">
</form>
..


ergens vind ik dat dubbelop, volgens mij kun je indat geval ook gewoon 1 form gebruiken (sterker nog, het gebruik van een form an sich is bijna overbodig, als je deze niet submit, alhoewel het qua backwards compatibility wel een voordeel kan hebben)

in ditt geval zou je eerste doel moeten zijn je function te debuggen, dat kun je doen door alertjes te plaatsen:
JavaScript:
1
2
3
4
5
6
7
8
function toCart(id, field){
    var aantal = document.forms['form' + field].
    alert('form exists: '+aantal)
    aantal = aantal.elements['field'+field]
    alert('form-element exists: '+aantal)
    aantal = aantal.value
    document.location.href = 'tomylist.asp?id=' + id + '&aantal=' + aantal;
}

[ Voor 23% gewijzigd door RM-rf op 09-09-2003 10:06 ]

Intelligente mensen zoeken in tijden van crisis naar oplossingen, Idioten zoeken dan schuldigen


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 10:01

crisp

Devver

Pixelated

RM-rf: geef dan iig een goed voorbeeld; nogmaals: location is een property van het window object, en hoewel het ook een property van het document object is (zij het deprecated) is het altijd de bedoeling geweest dat document.location read-only zou zijn. In het verleden zijn ze hier in de implementaties de mist in gegaan. Hier van uitgaan is echter bad practice. ;)

beetle71: een a-tag gebruiken om uiteindelijk een onclick uit te voeren is eigenlijk ook bad practice; als het puur om het handje en de hover gaat dan zijn er met css ook mogelijkheden om dat te simuleren (hoewel IE alleen hover op a-tags ondersteund).
Wil je echt perse een a-tag gebruiken cancel dan het event zodat de href niet uitgevoerd wordt; de href zelf kan je dan nog gebruiken als alternatieve navigatie in het geval javascript door de client niet ondersteund wordt of uitstaat:

HTML:
1
2
<a href="http://www.cocacola.com" target="_blank"
  onclick="openWin('http://www.cocacola.com');return false">TEST</a>

[ Voor 17% gewijzigd door crisp op 09-09-2003 13:19 ]

Intentionally left blank


  • beetle71
  • Registratie: Februari 2003
  • Laatst online: 21-08 17:05
crisp schreef op 09 September 2003 @ 13:16:
beetle71: een a-tag gebruiken om uiteindelijk een onclick uit te voeren is eigenlijk ook bad practice; als het puur om het handje en de hover gaat dan zijn er met css ook mogelijkheden om dat te simuleren (hoewel IE alleen hover op a-tags ondersteund).
Wil je echt perse een a-tag gebruiken cancel dan het event zodat de href niet uitgevoerd wordt; de href zelf kan je dan nog gebruiken als alternatieve navigatie in het geval javascript door de client niet ondersteund wordt of uitstaat:

HTML:
1
2
<a href="http://www.cocacola.com" target="_blank"
  onclick="openWin('http://www.cocacola.com');return false">TEST</a>
I know ;) Ik wilde alleen maar illustreren wat er fout zou kunnen zijn bij de TS, namelijk dat een location.href wijziging op het active window niet werkt in IE als er NOG een functiecall achteraan komt. En aangezien de href verwerking NA de onclick komt kan dat een probleem opleveren. Idem als er ook een onclick of mouseover op een onderliggend element wordt getriggerd!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 10:01

crisp

Devver

Pixelated

beetle71 schreef op 09 September 2003 @ 13:29:
[...]


I know ;) Ik wilde alleen maar illustreren wat er fout zou kunnen zijn bij de TS, namelijk dat een location.href wijziging op het active window niet werkt in IE als er NOG een functiecall achteraan komt. En aangezien de href verwerking NA de onclick komt kan dat een probleem opleveren. Idem als er ook een onclick of mouseover op een onderliggend element wordt getriggerd!
tsja, ik kan niet zien in wat voor element TS de onclick heeft staan, als dat een a-tag is kan dat inderdaad het probleem veroorzaken.
De return false voorkomt trouwens ook het event-bubbling naar onderliggende elementen :)

Intentionally left blank

Pagina: 1