quote:Op donderdag 8 juni 2006 00:35 schreef SuperRembo het volgende:
Ik denk dat het opvragen van de positie niet klopt. Hoe dat beter kan kan je bijvoorbeeld lezen op Quirksmode.org.
Deze OP: http://wiki.fok.nl/index.php/OP/Javascriptquote:Op donderdag 8 juni 2006 00:54 schreef fokME2 het volgende:
Ik heb Quirksmode etc al doorgelezen.
Deze manier van opvragen gebruikte ik al, toen ik objecten manipuleerde via getElementById.
http://dev.rnabv.nl/drag_id/drag.html
Maar nu maak ik de objecten aan met javascript, ik heb het gevoel dat het daar aan licht, maar ik weet niet wat ik er aan moet doen.
Dat is zeker interresantquote:Op donderdag 8 juni 2006 01:37 schreef mschol het volgende:
ik zou zeggen ga em maken..
en misschien kom ik nog wel meer dingen m.b.t. AJAX (wil ook de upload eens proberen, en dan wanneer hij upload, een loading ding laten zien , of beter een progessbar)
Ik vond het juist interessant om het te doen met objecten zonder ze dat id mee te geven. Want het zou toch niet uit moeten maken of je getElementById doet, of het object uit een objectenverzameling haalt?quote:Op donderdag 8 juni 2006 16:47 schreef Darkomen het volgende:
Waarom geef je jouw divs dan ook niet een id mee?
obj.setAttribute('id',divIdName);
klinkt erg als iets voor AJAXquote:Op donderdag 8 juni 2006 19:51 schreef HuHu het volgende:
Vraagje: ik heb een upload-script waarmee bestanden kunnen worden geupload (dûh). Maargoed, als er op Submit wordt geklikt zou ik graag een animated gifje willen tonen, zodat men kan zien dat hij bezig is.
Ik heb een mooi loading gifje voor handen. Maar deze wil ik dus midden in het window tonen op het moment dat er op Submit geklikt wordt. Hij moet dus boven de site zelf 'zweven'.
Heeft iemand een idee of tip hoe ik dit makkelijk kan doen? Ik had wat geprobeerd met een <div> tag die zichtbaar werd op het moment dat je klikte, maar dat schoot niet echt op.
Waarom schoot dat niet op?quote:Op donderdag 8 juni 2006 19:51 schreef HuHu het volgende:
Vraagje: ik heb een upload-script waarmee bestanden kunnen worden geupload (dûh). Maargoed, als er op Submit wordt geklikt zou ik graag een animated gifje willen tonen, zodat men kan zien dat hij bezig is.
Ik heb een mooi loading gifje voor handen. Maar deze wil ik dus midden in het window tonen op het moment dat er op Submit geklikt wordt. Hij moet dus boven de site zelf 'zweven'.
Heeft iemand een idee of tip hoe ik dit makkelijk kan doen? Ik had wat geprobeerd met een <div> tag die zichtbaar werd op het moment dat je klikte, maar dat schoot niet echt op.
true, maar punt is dat dat me binnenschoot doordat ik rer mee bezig wasquote:Op donderdag 8 juni 2006 22:13 schreef CraZaay het volgende:
Hiervoor ajax gebruiken is onnodig, omdat er geen communicatie met de server nodig is (on submit > display div).
1 2 3 4 5 6 7 8 9 10 11 12 13 | { if(XMLHttpRequestObject) { XMLHttpRequestObject.open("GET", dataSource); XMLHttpRequestObject.onreadystatechange = function() { if (XMLHttpRequestObject.readyState == 4 && XMLHttpRequestObject.status == 200) { eval(XMLHttpRequestObject.responseText); } } XMLHttpRequestObject.send(null); } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | { if(XMLHttpRequestObject) { XMLHttpRequestObject.open("GET", dataSource); XMLHttpRequestObject.onreadystatechange = function() { if (XMLHttpRequestObject.readyState == 4 && XMLHttpRequestObject.status == 200) { eval(XMLHttpRequestObject.responseText); } else { alert(XMLHttpRequestObject.readyState+"\n"+XMLHttpRequestObject.responseText); } } XMLHttpRequestObject.send(null); } } Fout: [Exception... "Component returned failure code: 0xc1f30001 (NS_ERROR_NOT_INITIALIZED) [nsIXMLHttpRequest.send]" nsresult: "0xc1f30001 (NS_ERROR_NOT_INITIALIZED)" location: "JS frame :: http://borntobewild.site.nl/Chat/js/chat.js :: getData :: line 22" data: no] Bronbestand: http://borntobewild.site.nl/js/chat.js Regel: 22 |
Ter referentie:quote:Op maandag 12 juni 2006 21:41 schreef Darkomen het volgende:
Dat dacht ik dus ook, en ik weet ongeveer welke readystates het zijn.
1 |
Werkt dat niet alleen in IE (of iig niet in FF)?quote:Op maandag 12 juni 2006 22:31 schreef SuperRembo het volgende:
Een alert() gebruiken is in zo'n geval als dit (waarbij de timing een rol speelt) niet handig. Het is dan makkelijker om bijvoorbeeld een tekstje aan de window.status te plakken.
[ code verwijderd ]
Heeft niet echt geholpen, hij geeft steeds, 1,2,3,1,2,3,1,2,3,1,2,3,1,1,1,1,2,3,1,1,2,3,1 en dan houdt het op. en krijg ik de foutmelding.quote:Op maandag 12 juni 2006 22:31 schreef SuperRembo het volgende:
Een alert() gebruiken is in zo'n geval als dit (waarbij de timing een rol speelt) niet handig. Het is dan makkelijker om bijvoorbeeld een tekstje aan de window.status te plakken.
[ code verwijderd ]
(of je gebruikt mijn debug scriptje)
Die pagina geeft meteen een voorbeeld.quote:Op maandag 12 juni 2006 22:50 schreef Darkomen het volgende:
Hoe werkt die debugger van jou?
Goed puntquote:Op maandag 12 juni 2006 22:40 schreef SuperRembo het volgende:
window.status is in elke browser beschikbaar.
Maar je moet natuurlijk in Firefox niet de optie aan hebben staan dat javascript verbied om de status tekst aan te passen
1 |
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 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 | // ***************************************************** // DOM scripting by brothercake -- http://www.brothercake.com/ //****************************************************** //global object var ixf = { 'clock' : null, 'count' : 1 } /******************************************************* /***************************************************************************** List the images that need to be cached *****************************************************************************/ ixf.imgs = [ 'images/home.jpg', 'images/agenda.jpg', ]; /***************************************************************************** *****************************************************************************/ //cache the images ixf.imgsLen = ixf.imgs.length; ixf.cache = []; for(var i=0; i<ixf.imgsLen; i++) { ixf.cache[i] = new Image; ixf.cache[i].src = ixf.imgs[i]; } //crossfade setup function function crossfade() { //if the timer is not already going if(ixf.clock == null) { //copy the image object ixf.obj = arguments[0]; //copy the image src argument ixf.src = arguments[1]; //store the supported form of opacity if(typeof ixf.obj.style.opacity != 'undefined') { ixf.type = 'w3c'; } else if(typeof ixf.obj.style.MozOpacity != 'undefined') { ixf.type = 'moz'; } else if(typeof ixf.obj.style.KhtmlOpacity != 'undefined') { ixf.type = 'khtml'; } else if(typeof ixf.obj.filters == 'object') { //weed out win/ie5.0 by testing the length of the filters collection (where filters is an object with no data) //then weed out mac/ie5 by testing first the existence of the alpha object (to prevent errors in win/ie5.0) //then the returned value type, which should be a number, but in mac/ie5 is an empty string ixf.type = (ixf.obj.filters.length > 0 && typeof ixf.obj.filters.alpha == 'object' && typeof ixf.obj.filters.alpha.opacity == 'number') ? 'ie' : 'none'; } else { ixf.type = 'none'; } //change the image alt text if defined if(typeof arguments[3] != 'undefined' && arguments[3] != '') { ixf.obj.alt = arguments[3]; } //if any kind of opacity is supported if(ixf.type != 'none') { //create a new image object and append it to body var doc = parent.header.document; ixf.newimg = doc.createElement('img'); //set positioning classname ixf.newimg.className = 'idupe'; //set src to new image src ixf.newimg.src = ixf.src //move it to superimpose original image ixf.newimg.style.left = ixf.getRealPosition(ixf.obj, 'x') + 'px'; ixf.newimg.style.top = ixf.getRealPosition(ixf.obj, 'y') + 'px'; //copy and convert fade duration argument ixf.length = parseInt(arguments[2], 10) * 1000; //create fade resolution argument as 20 steps per transition ixf.resolution = parseInt(arguments[2], 10) * 20; //start the timer ixf.clock = setInterval('ixf.crossfade()', ixf.length/ixf.resolution); } //otherwise if opacity is not supported else { //just do the image swap ixf.obj.src = ixf.src; } } }; //crossfade timer function ixf.crossfade = function() { //decrease the counter on a linear scale ixf.count -= (1 / ixf.resolution); //if the counter has reached the bottom if(ixf.count < (1 / ixf.resolution)) { //clear the timer clearInterval(ixf.clock); ixf.clock = null; //reset the counter ixf.count = 1; //set the original image to the src of the new image ixf.obj.src = ixf.src; } //set new opacity value on both elements //using whatever method is supported switch(ixf.type) { case 'ie' : ixf.obj.filters.alpha.opacity = ixf.count * 100; ixf.newimg.filters.alpha.opacity = (1 - ixf.count) * 100; break; case 'khtml' : ixf.obj.style.KhtmlOpacity = ixf.count; ixf.newimg.style.KhtmlOpacity = (1 - ixf.count); break; case 'moz' : //restrict max opacity to prevent a visual popping effect in firefox ixf.obj.style.MozOpacity = (ixf.count == 1 ? 0.9999999 : ixf.count); ixf.newimg.style.MozOpacity = (1 - ixf.count); break; default : //restrict max opacity to prevent a visual popping effect in firefox ixf.obj.style.opacity = (ixf.count == 1 ? 0.9999999 : ixf.count); ixf.newimg.style.opacity = (1 - ixf.count); } //now that we've gone through one fade iteration //we can show the image that's fading in ixf.newimg.style.visibility = 'visible'; //keep new image in position with original image //in case text size changes mid transition or something ixf.newimg.style.left = ixf.getRealPosition(ixf.obj, 'x') + 'px'; ixf.newimg.style.top = ixf.getRealPosition(ixf.obj, 'y') + 'px'; //if the counter is at the top, which is just after the timer has finished if(ixf.count == 1) { //remove the duplicate image //ixf.newimg.parentNode.removeChild(ixf.newimg); } }; //get real position method ixf.getRealPosition = function() { this.pos = (arguments[1] == 'x') ? arguments[0].offsetLeft : arguments[0].offsetTop; this.tmp = arguments[0].offsetParent; while(this.tmp != null) { this.pos += (arguments[1] == 'x') ? this.tmp.offsetLeft : this.tmp.offsetTop; this.tmp = this.tmp.offsetParent; } return this.pos; }; |
Helaas ik kom er dus niet achter hoe het op te lossen.quote:Op maandag 12 juni 2006 23:03 schreef Darkomen het volgende:
Eens proberen, bedankt.
quote:Op donderdag 8 juni 2006 16:17 schreef Darkomen het volgende:...
Maar heb je een online voorbeeld, je beschrijving zegt weinig.
Yups, dat snapte ik ik weet ook dat dat de fout is, ik kan het alleen niet afvangen.quote:Op dinsdag 13 juni 2006 19:20 schreef SuperRembo het volgende:
Het probleem is (zoals ik al eerder zei) dat de ene request nog niet klaar is als je al weer een nieuwe wil sturen met hetzelfde request object. Dat lukt dus niet.
Als je een nieuw XMLHTTPRequest object maakt, dan moet je er natuurlijk wel voor zorgen dat je de vorige overschijft (die mogelijk nog niet klaar is). Het makkelijkste kan je dat bereiken door het request object in een lokale variabele te stoppen in getData().quote:Op dinsdag 13 juni 2006 21:14 schreef Darkomen het volgende:
Ook het steeds een nieuw object aanmaken loste het niet op.
1 |
1 |
ik denk dat je eerst een declaratie moet doen. Een type mismatch hoeft niet op die variable te gebeuren, kan ook op 1 van de 2 functies gebeuren.quote:Op vrijdag 16 juni 2006 13:03 schreef mschol het volgende:
ik ben een beetje bezig met eeen semi achtig AJAX ding en loop nu teggen het volgende probleem aan:
ik roep een functie aan met 3 parameters:
[ code verwijderd ]
maar zodra ik em door wil geven naar een andere functie:
[ code verwijderd ]
dan krijg ik de melding dat er een type mismatch is op die regel ?
de volledige source code van het script is hier te vinden: een werkende pagina is te vinden op mijn homepage..
wat zie ik over het hoofd? waarom kan ik de waarde in divid niet gewoon doorgeven
1 2 | http.onreadystatechange = handleresponse(divid2); |
1 2 3 | handleresponse(divid); }; |
hmm zo werrkt et idd, straks eff die webpagina doornemen..quote:Op vrijdag 16 juni 2006 13:37 schreef SuperRembo het volgende:
Verander
[ code verwijderd ]
in
[ code verwijderd ]
(Zie ook http://jibbering.com/faq/faq_notes/closures.html voor uitleg over closures.)
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 | var naamVeld = document.getElementById ("naamVeld"); var naam = naamVeld.value; var naamCell = document.getElementById ("naamCel"); naamCell.innerHTML = naam; var bedrijfVeld = document.getElementById("Bedrijf"); var bedrijf = bedrijfVeld.value; var bedrijfCell = document.getElementById ("bedrijfCel"); bedrijfCell.innerHTML = bedrijf; var adresVeld = document.getElementById ("adres"); var adres = adresVeld.value; var adresCell = document.getElementById ("adresCel"); adresCell.innerHTML = adres; var postcodecijfersVeld = document.getElementById ("postcodecijfersVeld"); var postcodecijffers= postcodecijfersVeld.value; var postcodecijfersCell = document.getElementById ("postcodecijfersCel"); postcodecijfersCell.innerhtml = postcodecijfers; var postcodelettersVeld = document.getElementById ("postcodelettersVeld"); var postcodeletters = postcodelettersVeld.value; var postcodelettersCell = document.getElementById ("postcodelettersCel"); postcodelettersCell.innerHTML = postcodeletters; var plaatsVeld = document.getElementById ("Plaats"); var plaats = plaatsVeld.value; var plaatsCell = document.getElementById ("plaatsCel"); plaatsCell.innerHTML = Plaats; var telefoonVeld = document.getElementById ("Telefoon"); var telefoon = telefoonVeld.value; var telefoonCell= document.getElemenbtById ("telefoonCel"); plaatsCell.innerhtml = Plaats; var functieVeld = document.getElementById ("Functie"); var functie = functieVeld.value; var functieCell = document.getElementById ("functieCel"); functieCell.innerhtml = Functie var infoVeld = document.getElementById ("Informatie"); var informatie = infoVeld.value; var infoCell = document.getElementById ("infoCell"); infoCell.innerhtml = Informatie } |
Ja sorryquote:
a merci, ik zal eens aan het typen gaanquote:Javascript is hoofdlettergevoelig. Het moet .innerHTML zijn in plaats van .innerhtml.
eeeehm...quote:Als er zo veel herhaling in je code zit is het makkelijker om een funtie te makne die de value van het ene element naar de innerHTML van het andere element kopieert.
Ik bedoelde te zeggen dat de mededeling "het werkt niet" erg weinig informatie geeft. Wàt werkt er dan niet? Wàt gaat er fout?quote:Op vrijdag 16 juni 2006 16:23 schreef Etcetera het volgende:
Ja sorryik heb Javascript nog nooit begrepen, html gaat me een stuk beter af.
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |