http://www.w3.org/Submission/web-forms2/#the-autocompletequote:Op zaterdag 14 juli 2007 17:32 schreef Farenji het volgende:
WTF is dat AUTOCOMPLETE=off? Dat is sowieso geen geldige opmaak. Het zal een of andere custom toevoeging zijn voor een of ander script maar het zal hoogstwaarschijnlijk de reden zijn waarom je zo'n node niet mbv DOM kan aanmaken.
createElement, ga ik proberen...quote:Op zaterdag 14 juli 2007 17:37 schreef SuperRembo het volgende:
Autocomplete is gewoon een attribute om te voorkomen dat je browser de waarde van het veld automatisch aanvult.
Het probleem is dat je natuurlijk niet met createTextNode en een html string een invoerveld kan maken. Dat moet je ook via createElement doen.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | { for (i = 0; i < document.images.length; i++) { while ( !document.images[i].complete ) { break; } if ( document.images[i].width > 640 ) { document.images[i].width = 640; } } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | { img=document.getElementById("id").getElementsByTagName("img"); for (i = 0; i < img.length; i++) { while ( !img[i].complete ) { break; } if ( img[i].width > 640 ) { img[i].width = 640; } } } |
quote:Op donderdag 19 juli 2007 15:40 schreef Spockjuh_ het volgende:
elke hulp is welkom..om het wat duidelijker te maken, het geheel moet komen in een geeklog cms systeem, de site vind je onder mijn profiel, kan bijna niet missen!
quote:Not Found
The requested URL /suspended.page/ was not found on this server.
Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.
1 2 3 4 | plaatje.src = 'blaat.gif'; var breedte = plaatje.width; var hoogte = plaatje.height; |
1 2 3 4 5 | plaatje.setAttribute('src', 'plaatje.gif'); eenDiv.appendChild(plaatje); var breedte = plaatje.width; var hoogte = plaatje.height; |
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 | var metError = false; var plaatje = new Image(); plaatje.src = 'plaatje.gif'; plaatje.onLoad = plaatjeGeladen; function plaatjeGeladen() { var timeOut; var plaatjeCompleetGeladen = false; while (!plaatjeCompleetGeladen) { timeOut = new Date(); if (plaatje.complete) { plaatjeCompleetGeladen = true; metError = false; } // timeout op laten treden na 10s if (timeOut.getTime() - startTijd.getTime() >= 10000) { plaatjeCompleetGeladen = true; metError = true; } } } var breedte = plaatje.width; var hoogte = plaatje.height; |
Hetzelfde als height en width?quote:Op vrijdag 20 juli 2007 08:56 schreef Geqxon het volgende:
Wat doen clientHeight en offsetHeight bij je?
Tja, nu weet ik dat de browsers de volgende dingen ondersteunen:quote:Op vrijdag 20 juli 2007 09:21 schreef SuperRembo het volgende:
De onload event op plaatjes is in IE en FF geloof ik nog all buggy. Kijk eens naar de user_images() functie die hier op FOK (en op GoT) wordt gebruikt om te grootte plaatjes automatisch te verkleinen.
1 2 3 4 5 | if (image.width > 0) { blaat(); } ... |
1 2 3 4 | achtergrond.offsetWidth: 0 achtergrond.naturalWidth: undefined achtergrond.width: 550 |
1 2 3 4 | achtergrond.offsetWidth: 0 achtergrond.naturalWidth: undefined achtergrond.width: 550 |
1 2 3 4 | achtergrond.offsetWidth: 0 achtergrond.naturalWidth: 0 achtergrond.width: 0 |
1 2 3 4 | achtergrond.offsetWidth: 0 achtergrond.naturalWidth: 550 achtergrond.width: 550 |
Dat komt waarschijnlijk omdat je de property opvraagt als het plaatje noet niet (volledig) is geladen. Hoe je dat afvangt kan je dus even van die user_images() functie afkijken.quote:Op vrijdag 20 juli 2007 10:36 schreef CiQNiZ het volgende:
werkt prima in IE en Opera. Niet in Firefox.
Ik vraag de properties op TOTdat deze geset zijn. Dus dat houdt in dat ik wacht tot het plaatje geladen is (via een while-lus). Na 4 seconden zeg ik stop (duurt te lang, want het is lokaal), en dan heeft Firefox nog niks bijzonders gedaan. IE en Opera die komen niet eens zover, die zijn dan al lang klaar!quote:Op vrijdag 20 juli 2007 11:07 schreef SuperRembo het volgende:
[..]
Dat komt waarschijnlijk omdat je de property opvraagt als het plaatje noet niet (volledig) is geladen. Hoe je dat afvangt kan je dus even van die user_images() functie afkijken.
Dat komt omdat er tijdens de while loop geen events worden afgehandeld. Waarschijnlijk staat op deze maniet de cpuload nog op 100% ook. Als je wil kijken of het plaatje na x seconden nog niet geladen is dan kan je beter setTimeout() gebruiken.quote:Op vrijdag 20 juli 2007 11:12 schreef CiQNiZ het volgende:
[..]
Ik vraag de properties op TOTdat deze geset zijn. Dus dat houdt in dat ik wacht tot het plaatje geladen is (via een while-lus). Na 4 seconden zeg ik stop (duurt te lang, want het is lokaal), en dan heeft Firefox nog niks bijzonders gedaan. IE en Opera die komen niet eens zover, die zijn dan al lang klaar!
kunnen jullie nog eens een poging wagen, de boel draait weer..quote:Op donderdag 19 juli 2007 15:40 schreef Spockjuh_ het volgende:
als javascript nono zie ik geen ander keus dan me te wenden tot de experts hier...
ik zoek nameljik een tool die mij kan helpen met het zichtbaar maken van een foto plus informatietext wanneer je over een naam gaat met de muis. Ik heb al een script gevonden maar dat is hogere school werk, iets wat mij dus telang gaat duren.
Om een duidelijk beeld te geven zoek ik het volgende:
de gebruiker gaat met de muis over en/of klikt op de naam die er staat. op dat moment komt er een popup scherm naar voren waar een foto instaat en wat begeleidende informatie (mogelijk ook een clickable url als dat mogelijk is) . zoals ik al zei is mijn kennis wat betreft java echt minimaal dus zoek of een goede script die gebruksvriendelijk is OF iemand die tijd over heeft en me kan helpen om iig een begin te maken met dit alles..
elke hulp is welkom..om het wat duidelijker te maken, het geheel moet komen in een geeklog cms systeem, de site vind je onder mijn profiel, kan bijna niet missen!
Het probleem anders oplossen? Kun je niet alles een bepaalde class-name geven? getElements() oid?quote:Op vrijdag 27 juli 2007 16:13 schreef Swetsenegger het volgende:
Als ik meerdere elementen met hetzelfde id heb in een source. Hoe kan ik dan met javascript de juiste vinden?
document.getElementById geeft volgens mij de eerste terug?
neen... dat kan nietquote:Op vrijdag 27 juli 2007 16:21 schreef Geqxon het volgende:
[..]
Het probleem anders oplossen? Kun je niet alles een bepaalde class-name geven? getElements() oid?
En staan alle items niet toevallig in bijvoorbeeld een tabel? Je zou dan een getElements kunnen uitvoeren, dan krijg je een array met alle elementen binnen deze tabel. Vervolgens een for-loopje er overheen, een if-statement (if element.id == 'swets'), en zo ja > Iets doen.quote:Op vrijdag 27 juli 2007 16:28 schreef Swetsenegger het volgende:
[..]
neen... dat kan niet
het is niet mijn source
nou dat is vrij lastig. er is de niet w3c document.all functie. Maar de juiste syntax om het tweede element met hetzelfde id te vinden is lastigquote:Op vrijdag 27 juli 2007 16:33 schreef Geqxon het volgende:
[..]
En staan alle items niet toevallig in bijvoorbeeld een tabel? Je zou dan een getElements kunnen uitvoeren, dan krijg je een array met alle elementen binnen deze tabel. Vervolgens een for-loopje er overheen, een if-statement (if element.id == 'swets'), en zo ja > Iets doen.
quote:Op vrijdag 27 juli 2007 16:38 schreef Swetsenegger het volgende:
[..]
nou dat is vrij lastig. er is de niet w3c document.all functie. Maar de juiste syntax om het tweede element met hetzelfde id te vinden is lastig :)
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 | <div id="negger">Data</div> <div id="swets">Data</div> <div id="negger">Data</div> <div id="swets">Data</div> <div id="negger">Data</div> </div> <script> var parentdiv = "customerdatafield" var childdiv = "swets"; var customerArray = document.getElementById(parentdiv).getElementsByTagName("div"); for (i = 0; i < customerArray.length; i++){ var customer = customerArray[i]; if (customer.id == childdiv){ customer.style.backgroundColor = "#FF9900" } } </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 | /*@cc_on @*/ /*@if (@_jscript_version >= 5) // JScript gives us Conditional compilation, we can cope with old IE versions. // and security blocked creation of the objects. try { xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); } catch (E) { xmlhttp = false; } } @end @*/ if (!xmlhttp && typeof XMLHttpRequest!='undefined') { xmlhttp = new XMLHttpRequest(); } function BarcodeCheck(value) { xmlhttp.open("GET", "ajax_check.php?request=barcodecheck&barcode="+value,true);//method, target, async (set always true!) xmlhttp.onreadystatechange=function() { if (xmlhttp.readyState==4) { document.getElementById('BarcodeGeldigheid').innerHTML = xmlhttp.responseText; } } xmlhttp.send(null); } |
1 |
1 2 | <script language="javascript">insRow()</script> |
ik heb er al op gegoogled maar ik snap er echt geen fuck van...quote:Op zondag 19 augustus 2007 20:53 schreef Geqxon het volgende:
Google eens wat op eval. Doet exact wat jij wilt.
Zo'n functie heb ik toevallig deze week nog ergens gejat ;)quote:Op maandag 20 augustus 2007 15:34 schreef Qunix het volgende:
In het PHP topic vroeg ik het volgende:
Ik heb een formulier en ik wil een voorbeeld zien voordat het gesubmit wordt via een button. Een voorbeeld verschijnt in een popup... Alle inhoud komt alleen niet aan in de popup. Wat doe ik fout?
Inmiddels ben ik erachter dat het eventueel wel mogelijk is met Javascript. Na wat zoeken kom ik niet verder dan een voorbeeld te krijgen op dezelfde pagina.
Kan iemand mij helpen?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | winFeatures = 'left=' + (screen.availWidth-10-width)/2 + ',top=' + (screen.availHeight-30-height)/2 + ',scrollbars=' + scrollbars + ',resizable=' + resizable + ',width=' + width + ',height=' + height + ',toolbar=0,location=0,status=0,menubar=0' window.open(theURL, winName, winFeatures); } //Function to open preview window function OpenPreviewWindow(formName){ now = new Date; submitAction = formName.action; submitTarget = formName.target; winOpener('','preview',1,1,640,400) formName.action = 'forum.php?c=preview'; formName.target = 'preview'; formName.submit(); formName.action = submitAction; formName.target = submitTarget; } |
1 |
wat je eigenlijk doet is gewoon een onclick-window-open() op de button...quote:Op maandag 20 augustus 2007 15:34 schreef Qunix het volgende:
In het PHP topic vroeg ik het volgende:
Ik heb een formulier en ik wil een voorbeeld zien voordat het gesubmit wordt via een button. Een voorbeeld verschijnt in een popup... Alle inhoud komt alleen niet aan in de popup. Wat doe ik fout?
Inmiddels ben ik erachter dat het eventueel wel mogelijk is met Javascript. Na wat zoeken kom ik niet verder dan een voorbeeld te krijgen op dezelfde pagina.
Kan iemand mij helpen?
1 |
1 2 3 4 5 6 7 8 9 10 | var data = window.opener.document.getElementById('content').value; var title = window.opener.document.getElementById('title').value; var subtitle = window.opener.document.getElementById('subtitle').value; var ender = window.opener.document.getElementById('ender').value; var regExp = new RegExp("n","g"); var result = data.replace(regExp,"<br/>"); document.writeln('<b>'+subtitle+'</b><br/><br/>'); document.writeln(result); </script> |
hoe ik dmv ajax er 3 extra rows bij kan krijgen, want javascript wordt niet uitgevoerd als ik ajax outputquote:Op zondag 19 augustus 2007 23:20 schreef Farenji het volgende:
Zo moeilijk is dat toch niet? Wat snap je niet?
1 |
quote:Op woensdag 29 augustus 2007 16:01 schreef Chandler het volgende:
Stel ik heb een array in js
vb:
[ code verwijderd ]
hoe kan ik dan blaat en 123 uitlezen zoals in php met foreach ($x as $key => $value)
Anyone?
1 2 3 4 5 6 | var itemvalue = arrayx[itemkey]; alert (itemkey); alert(itemvalue); } |
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 | <tr> <td>Scherm breedte</td> <td><div id="pbreedte"></div></td> </tr> <tr> <td>Center scherm</td> <td><div id="pcenter"></div></td> </tr> <tr> <td>Positie links</td> <td><div id="plinks"></div></td> </tr> <tr> <td>Positie rechts</td> <td><div id="prechts"></div></td> </tr> </table> <div id=centermidden style="position: absolute; top: 0; left: 0;display: none; border: 1px solid black; height: 300px; width: 160px; text-align: center;"> midden</div> <div id=centerlinks style="position: absolute; top: 0; left: 0;display: none; border: 1px solid green; height: 300px; width: 160px;">Links</div> <div id=centerrechts style="position: absolute; text-align: right; top: 0; left: 0;display: none; border: 1px solid orange; height: 300px; width: 160px;">Rechts</div> <script language="javascript"> function adBox() { contentSize = 500; document.getElementById('pbreedte').innerHTML = document.documentElement['offsetWidth']; document.getElementById('pcenter').innerHTML = ((document.documentElement['offsetWidth'] -2)/2 - 80); midden = document.getElementById('pcenter').innerHTML; document.getElementById('plinks').innerHTML = ((document.documentElement['offsetWidth']/2) - (contentSize /2) - 160); document.getElementById('centerlinks').style.left = ((document.documentElement['offsetWidth']/2) - (contentSize /2) - 160); document.getElementById('centerlinks').style.display = 'block'; document.getElementById('prechts').innerHTML = ((document.documentElement['offsetWidth']/2) + (contentSize /2)); document.getElementById('centerrechts').style.left = ((document.documentElement['offsetWidth']/2) + (contentSize /2)); document.getElementById('centerrechts').style.display = 'block'; document.getElementById('centermidden').style.left = document.getElementById('pcenter').innerHTML; document.getElementById('centermidden').style.display = 'block'; } window.onresize = adBox(); adBox(); </script> |
1 |
1 2 3 4 5 6 | window.addEventListener("load", dothis, false) else if (window.attachEvent) //IE exclusive method for binding an event window.attachEvent("onload", dothis) else if (document.getElementById) //support older modern browsers window.onload=dothis |
1 |
1 |
Fout: uncaught exception: [Exception... "Could not convert JavaScript argument" nsresult: "0x80570009 (NS_ERROR_XPC_BAD_CONVERT_JS)" location: "JS frame :: file:///.../desktop/centerscreen.html :: <TOP_LEVEL> :: line 51" data: no]quote:Op donderdag 30 augustus 2007 12:13 schreef super-muffin het volgende:
[ code verwijderd ]
En wat als je er "resize" in plaats van "onresize" van maakt, en je geen haakjes achter je functie plakt?quote:Op donderdag 30 augustus 2007 12:07 schreef Chandler het volgende:
Leuke foutmelding van FF:
Fout: uncaught exception: [Exception... "Could not convert JavaScript argument" nsresult: "0x80570009 (NS_ERROR_XPC_BAD_CONVERT_JS)" location: "JS frame :: file:///..../desktop/centerscreen.html :: <TOP_LEVEL> :: line 51" data: no]
Foutieve code
[ code verwijderd ]
Ook foute code maar zonder error
[ code verwijderd ]
Beiden werken trouwens niet in FF
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 | <head> <title>text resize</title> </head> <body onResize="adBox();"> <table> <tr> <td>Scherm breedte</td> <td><div id="pbreedte"></div></td> </tr> <tr> <td>Center scherm</td> <td><div id="pcenter"></div></td> </tr> <tr> <td>Positie links</td> <td><div id="plinks"></div></td> </tr> <tr> <td>Positie rechts</td> <td><div id="prechts"></div></td> </tr> </table> <div id=centermidden style="position: absolute; top: 0; left: 0;display: none; border: 1px solid black; height: 300px; width: 160px; text-align: center;"> midden</div> <div id=centerlinks style="position: absolute; top: 0; left: 0;display: none; border: 1px solid green; height: 300px; width: 160px;">Links</div> <div id=centerrechts style="position: absolute; text-align: right; top: 0; left: 0;display: none; border: 1px solid orange; height: 300px; width: 160px;">Rechts</div> <script language="javascript"> function adBox() { contentSize = 500; document.getElementById('pbreedte').innerHTML = document.documentElement['offsetWidth']; document.getElementById('pcenter').innerHTML = ((document.documentElement['offsetWidth'] -2)/2 - 80); midden = document.getElementById('pcenter').innerHTML; document.getElementById('plinks').innerHTML = ((document.documentElement['offsetWidth']/2) - (contentSize /2) - 160); document.getElementById('centerlinks').style.left = ((document.documentElement['offsetWidth']/2) - (contentSize /2) - 160); document.getElementById('centerlinks').style.display = 'block'; document.getElementById('prechts').innerHTML = ((document.documentElement['offsetWidth']/2) + (contentSize /2)); document.getElementById('centerrechts').style.left = ((document.documentElement['offsetWidth']/2) + (contentSize /2)); document.getElementById('centerrechts').style.display = 'block'; document.getElementById('centermidden').style.left = document.getElementById('pcenter').innerHTML; document.getElementById('centermidden').style.display = 'block'; } if (window.addEventListener) //DOM method for binding an event { window.addEventListener("resize", adBox(), true) } else if (window.attachEvent) //IE exclusive method for binding an event { window.attachEvent("resize", adBox()) } else if (document.getElementById) //support older modern browsers { window.resize = adBox(); } adBox(); </script> </body> </html> |
1 2 3 4 5 6 7 8 9 10 | alert("Yoob"); } if (window.addEventListener) //DOM method for binding an event window.addEventListener("resize", showMessage, false) else if (window.attachEvent) //IE exclusive method for binding an event window.attachEvent("onresize", showMessage) else if (document.getElementById) //support older modern browsers window.onresize=showMessage |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | { if (obj.addEventListener) obj.addEventListener( type, fn, false ); else if (obj.attachEvent) { obj["e"+type+fn] = fn; obj[type+fn] = function() { obj["e"+type+fn]( window.event ); } obj.attachEvent( "on"+type, obj[type+fn] ); } } function resizeHandler(e) { // ... } addEvent(window, "resize", resizeHandler); |
Je moet natuurlijk wel de twee haakjes achter adBox weghalen, als je hem in een event-handler dondert.quote:Op donderdag 30 augustus 2007 13:20 schreef Chandler het volgende:
Het werkt nu wel iig, maar zie eingelijk geen verschilwhat happend?
Doet dit niet basicly hetzelfde?quote:Op donderdag 30 augustus 2007 13:24 schreef SuperRembo het volgende:
Met de addEvent/removeEvent functies van quirksmode.org:
[ code verwijderd ]
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 | ... adsense enzo.... </div> <script language="javascript"> function adBox() { contentSize = 720; midden = ((document.documentElement['offsetWidth'] -2)/2 - 80); document.getElementById('centerrechts').style.left = ((document.documentElement['offsetWidth']/2) + (contentSize /2)); document.getElementById('centerrechts').style.display = 'block'; } function addEvent( obj, type, fn ) { if (obj.addEventListener) obj.addEventListener( type, fn, false ); else if (obj.attachEvent) { obj["e"+type+fn] = fn; obj[type+fn] = function() { obj["e"+type+fn]( window.event ); } obj.attachEvent( "on"+type, obj[type+fn] ); } } addEvent(window, "resize", adBox); adBox(); </script> |
1 2 3 | Source File: http://www.gfxpoll.nl/index.php Line: 0 |
Basicly wel. In mijn versie kan je de code makkelijker hergebruiken. Verder zit er een verschil in de scope waarin de handlers worden uitgevoerd.quote:Op donderdag 30 augustus 2007 13:44 schreef Geqxon het volgende:
[..]
Doet dit niet basicly hetzelfde?
Het is niet zo dat de style.left property niet wordt ondersteund, maar de waarde die je er in probeert te zetten is ongeldig. Style.left moet een lengte zijn: een getal en een eenheid (bij px, pt of %). Alleen bij de waarde 0 mag je de eenheid weglaten.quote:Op donderdag 30 augustus 2007 18:05 schreef Chandler het volgende:
Volgens mij wel, maar nu blijkt dit weer niet te werken in FF krijg een melding dat LEFT niet geaccepteerd wordt!
[ code verwijderd ]
en dan de melding in FF
[ code verwijderd ]snap ut nou helemaal niet meer
FF ver. 1.5.0.12
Ik heb mij er eens even in verdiept, ik heb hem door. Dank uquote:Op donderdag 30 augustus 2007 18:09 schreef SuperRembo het volgende:
[..]
Basicly wel. In mijn versie kan je de code makkelijker hergebruiken. Verder zit er een verschil in de scope waarin de handlers worden uitgevoerd.
Maar beide versies zijn verre van bug-vrij.
1 2 3 | alert(arr["foo"]); alert(arr.foo); |
1 2 3 4 | blaat.property1 = "blaat"; blaat["property1"] = "blaat; |
1 2 3 | property1: "blaat" }; |
Wat zoek je dan? Je kunt er wel doorheen lopen met een for:quote:Op donderdag 6 september 2007 13:29 schreef Chandler het volgende:
Ah SuperRembo, jammer dat dat er niet in verwerkt zit :{ want de optie die je aangeeft is niet echt wat ik zoek :( dan maar zonder array werken :P
1 2 3 4 5 | for (var i in myCollection) { alert(myCollection[i]); } |
Er zitten wel arrays in, maar niet met named keys. Maar wat wil je precies doen? Het zou zomaar kunnen dat het toch lukt met objecten of anderszinsquote:Op donderdag 6 september 2007 13:29 schreef Chandler het volgende:
Ah SuperRembo, jammer dat dat er niet in verwerkt zitwant de optie die je aangeeft is niet echt wat ik zoek
dan maar zonder array werken
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 | <head> <script language="javascript"> var xmlHttp; // xmlHttp var. var xmlHttpError; // error variable var xmlHttpFailure = false; // false for failure var xmlHttpCache; // buffer for received data function create_http_object() { // This array is a list of all/most possible XMLHTTP types var ActiveXTypes = [ "Microsoft.XMLHTTP", "MSXML2.XMLHTTP.5.0", "MSXML2.XMLHTTP.4.0", "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP" ]; // Loop through the ActiveXTypes array and for (var i = 0; i < ActiveXTypes.length; i++) { // try to use the current XMLHTTP object, // if not it's not possible try the next try { return new ActiveXObject(ActiveXTypes[i]); } catch(e) { // object kan niet gebruikt worden! } } // none of them worked, try the function XMLHttpRequest() try { return new XMLHttpRequest(); } catch(e) { alert("Helemaal geen XML mogelijkheden"); } // It seems that the browser doesn't support AJAX Stuff return false; } function stateChanged() { // is readyState 4? 4 = all data is received if (xmlHttp.readyState == 4) { // return data to xmlHttpCache variable xmlHttpCache = xmlHttp.responseText; } } function ajaxSubmit(url, data, returnOBJ) { // url location of the scripting // data array of submit data // returnOBJ is the object to return the received data to // open XMLHTTP connection xmlHttp = create_http_object(); // connection open? if (xmlHttp != false) { // when state is ready, do save xmlHttp.onreadystatechange = stateChanged(); // open url xmlHttp.open('POST', url, true); // set headers before posting xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); xmlHttp.setRequestHeader("Content-length", data.length); xmlHttp.setRequestHeader("Connection", "close"); // send data to server xmlHttp.send(data); // object is given! (or not?) if (returnOBJ != "") { // add received content to given object (returnOBJ) returnOBJ = xmlHttpCache; } } else { // display ERROR notice notifyNoAjax(); } } function ajaxGet(url, data, returnOBJ) { // url location of scripting // data compilation of string paramters // return OBJ object to return received data to // open XMLHTTP connection xmlHttp = create_http_object(); // connection open? if (xmlHttp != false) { // what to do with received data! xmlHttp.onreadystatechange = stateChanged(); // open url location xmlHttp.open('GET', url + data, true); // send nothing, just go receive data xmlHttp.send(null); // if received data is longer then.... if (xmlHttpCache.length > 0 && returnOBJ != "") { returnOBJ = xmlHttpCache; } } else { // display ERROR notice! notifyNoAjax(); } } function notifyNoAjax() { if (xmlHttpFailure == false) { alert('Sorry, uw brouwser ondersteund geen AJAX / Javascript calls'); } } </script> </head> <body> <div id="receiveddatadiv" style="width: 300px; height: 100px; border: 1px solid green">Content is comming....</div> <a href="#" onClick="ajaxGet('file://c:/1.html', '', document.getElementById('receiveddatadiv').innerHtml);">AJAX GET TEST</a> <form> Name: <input type="text" id="id_name"><br /> Text: <textarea name="text" id="id_text"></textarea><br /> </form> <input type="button" onClick="ajaxSubmit('c:/test.php', 'name=' + escape(encodeURI(document.getElementById('id_name').value)) + '&text=' + escape(encodeURI(document.getElementById('id_text').value)), document.getElementById('receiveddatadiv').innerHtml);" value="AJAX POST TEST"> </body> </html> |
1 2 3 4 5 6 7 8 9 10 11 12 | { var data = []; for (p in params) { data.push(encodeURIComponent(p) + "=" + encodeURIComponent(params[p])); } return data.join("&"); } var params = { code: "foo", name: "Foo" }; var data = encodeParams(params); |
quote:Sorry, uw brouwser ondersteund geen AJAX / Javascript calls
Mooi lapje code! maar wat bedoel je met de laatste quote?quote:Op donderdag 6 september 2007 18:53 schreef SuperRembo het volgende:
[ code verwijderd ]
Dan kan je de variabele data in een url ("test.php?" + data) of als post data in een http request (request.send(data)).
[..]
![]()
Dat je code als het een publieke website is liever ook werkt als JS uit staat denk ik, en dat mensen zonder JS deze alert nooit gaan zienquote:Op vrijdag 7 september 2007 09:32 schreef Chandler het volgende:
[..]
Mooi lapje code! maar wat bedoel je met de laatste quote?
Wat doet die returnObj parameter in je functie? Parameters zijn om iets door te geven aan een functie, niet voor return values... bovendien zie ik de functie nergens wachten tot er een resultaat is. Er wordt vanuit gegaan dat er meteen resultaat is, dat werkt heel misschien als je op localhost zit te testen maar dat gaat gegarandeerd mis als de request iets langer duurt, want alles gaat asynchroon en het script blijft daar dus niet op wachten. Met AJAX wil je netjes event based werken, maw: een callbackfunctie definieren die pas aangeroepen wordt als alle data ook daadwerkelijk binnen is. Als je dat niet doet heb je (zeker bij meerdere ajax calls door elkaar die van elkaar afhankelijk zijn) grote kans op een zeer instabiele applicatie die moeilijk tot onmogelijk te debuggen is. Been there, done that, got the t-shirt....quote:Op vrijdag 7 september 2007 12:16 schreef Chandler het volgende:
Haha, duidelijk jatrue true..
Heb je iig nog comments op mjin funcies? hoor graag opbouwende kritiek!
De spelling "brouwser"quote:Op vrijdag 7 september 2007 09:32 schreef Chandler het volgende:
Mooi lapje code! maar wat bedoel je met de laatste quote?Ik heb de code trouwens aangepast
Als bij elke auto de motor opnieuw uitgevonden zou worden zouden auto's 120 miljoen per stuk kosten en ze zouden voor geen meter rijden.quote:Op vrijdag 7 september 2007 15:00 schreef Chandler het volgende:
Hoi Farenji, ik begrijp je dat je zegt dat je het wiel niet opnieuw moet uitvinden, dat wordt zovaak gezegd maar als we het wiel nooit verder zouden uitvinden waren raceauto's nog steeds zo sloom als slakken
Hmm in je code die je hier postte dus niet. Daar wordt het resultaat meteen na de ajaxcall in returnObj gestopt en dat was niet handig. Zoals je het nu doet is het wel beter.quote:Maar om even inhoudenlijk op je reactie m.b.t. de javascript code in te gaan. die returnOBJ wordt gebruikt om de callbackfunctie aan te geven. Dit omdat ik de standaard submit en get functie wil gebruiken met apparte functies voor het 'benutten' van de output van het script!
* create_http_object probeert voor Firefox eerst al die ActiveX dingen te maken (die natuurlijk niet lukken), pas daarna wordt XMLHttpRequest() aangeroepen. Beetje zonde.quote:Op zaterdag 8 september 2007 08:42 schreef Chandler het volgende:
maar nu nog inhoudelijk commentaar op mijn scripting?
Dus eingelijk die XMLHttpRequest eerst proberen en daarna de rest? (zonder controle brouwser!)quote:Op zaterdag 8 september 2007 18:45 schreef SuperRembo het volgende:
* create_http_object probeert voor Firefox eerst al die ActiveX dingen te maken (die natuurlijk niet lukken), pas daarna wordt XMLHttpRequest() aangeroepen. Beetje zonde.
Klopt, heb ik veranderd in stateFunctionquote:* De parameter returnOBJ returnt niets en is geen object, foute naam dus.
Dus eingeljik zou ik beter de functie notifyNoAjax(); in create_http_object kunnen zetten?quote:* ajaxSubmit en ajaxGet controleren of create_http_object wel gelukt is en geven dan een melding. Die melding geeft de functie create_http_object zelf ook al.
Zou je mij even wat in de richting kunnen duwen van de inefficiente code?quote:* Er zit wat dubbele code in, kan vast wel efficienter
Dat zou al beter zijn. Het kan nog mooier (code van Crisp als ik 't goed heb):quote:Op zaterdag 8 september 2007 19:52 schreef Chandler het volgende:
Dus eingelijk die XMLHttpRequest eerst proberen en daarna de rest? (zonder controle brouwser!)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | { window.XMLHttpRequest = function() { var types = [ 'Microsoft.XMLHTTP', 'MSXML2.XMLHTTP.5.0', 'MSXML2.XMLHTTP.4.0', 'MSXML2.XMLHTTP.3.0', 'MSXML2.XMLHTTP' ]; for (var i = 0; i < types.length; i++) { try { return new ActiveXObject(types[i]); } catch(ex) {} } throw "XMLHttpRequest not supported."; } } |
quote:Zou je mij even wat in de richting kunnen duwen van de inefficiente code?
1 2 3 4 5 6 7 8 | { xmlHttp.open('GET', url + data + "&cache=" + saveDate.getTime(), true); } else { xmlHttp.open('GET', url + "?cache=" + saveDate.getTime(), true); } |
1 2 3 4 5 6 7 8 9 10 | { url += data + "&"; } else { url += "?"; } url += "cache=" + saveDate.getTime(); xmlHttp.open('GET', url, true); |
1 2 3 4 5 6 7 8 9 10 | var xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function() { if (xmlhttp.readyState==4 && xmlhttp.status==200) { eval(xmlhttp.responseText); } } xmlhttp.open("GET", "ajax_check.php?request=barcodecheck&barcode="+value,true); xmlhttp.send(null); } |
daar hebben we het probleem al, ajax_check werd gecachedquote:Op zondag 9 september 2007 10:56 schreef SuperRembo het volgende:
Wat staat er in xmlhttp.responseText?
Voor productie, ja. Voor het aanleren daarentegen valt er heel wat voor te zeggen om een deel van het wiel zelf uit te vinden (en zo complex was AJAX nou ook weer niet).quote:Op vrijdag 7 september 2007 14:44 schreef Farenji het volgende:
Tip: ga niet zelf het wiel opnieuw uitvinden maar gebruik een goede kant en klare AJAX library.
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 | # fok verwijdert wat backslashes.. header('Cache-Control: no-cache'); header('Pragma: no-cache'); if ( $_GET['barcode'] ) { if ( $_GET['barcode'] == "CO-1337" ) { echo "insRow(1,' <img src="images/toptoright.gif" />Naam','<input type="text" name="textfield2" id="textfield2" value="Smit" />')"; echo "rn"; echo "insRow(2,' <img src="images/toptoright.gif" />Telefoonnummer','<input type="text" name="textfield2" id="textfield2" value="074-23663593" />')"; echo "rn"; echo "barcodeveldColor('found')"; } elseif ( $_GET['barcode'] == "CO-1336" ) { echo "insRow(1,' <img src="images/toptoright.gif" />Naam','<input type="text" name="textfield2" id="textfield2" value="Janssen" />')"; echo "rn"; echo "insRow(2,' <img src="images/toptoright.gif" />Telefoonnummer','<input type="text" name="textfield2" id="textfield2" value="074-26663593" />')"; echo "rn"; echo "barcodeveldColor('found')"; } else { echo "barcodeveldColor('notfound')"; } } else { echo "barcodeveldColor('notfound')"; } ?> |
Dat lijkt me logisch als je nooit rijden verwijderd...quote:Op zondag 9 september 2007 23:26 schreef wobbel het volgende:
1e fout: als ik eerst goede code doe, en dan foute laat ie de rijen van de goede code staan (mag dus niet)
2e fout: als ik meerdere malen een goede code invul blijven de rijen zich opstapelen
maar hoe controleer ik of die rijen al bestaan dan? Ik weet niet waar ik moet beginnen en google geeft me alleen de code om de rijen te verwijderen...quote:Op maandag 10 september 2007 07:31 schreef SuperRembo het volgende:
[..]
Dat lijkt me logisch als je nooit rijden verwijderd...
Bedoel je chrome/classic/skin/classic.jar/browser/Thrubber.gif?quote:Op maandag 10 september 2007 19:52 schreef PiRANiA het volgende:
Ey,
Weet iemand waar dat gifje te vinden is uit firefox dat je te zien krijgt als je op het laden van het tebblad wacht?
Ik heb die nodig voor een ajax-site...
hoe extract je die jar?quote:Op maandag 10 september 2007 20:22 schreef SuperRembo het volgende:
[..]
Bedoel je chrome/classic/skin/classic.jar/browser/Thrubber.gif?
Gewoon met winzip/winrar/...quote:
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 | function Kiekeboe_a () { if ( document.getElementById ( 'Barcode' ).value == 'y' ) { document.getElementById ( 'BarcodeVeld' ).className = 'BarcodeKiekeboe'; document.getElementById ( 'KlantVeld' ).className = 'KlantVerstopt'; } else { document.getElementById ( 'BarcodeVeld' ).className = 'BarcodeVerstopt'; document.getElementById ( 'KlantVeld' ).className = 'KlantKiekeboe'; } } function Kiekeboe_b () { if ( document.getElementById ( 'Barcode' ).value == 'n' ) { document.getElementById ( 'BarcodeVeld' ).className = 'BarcodeKiekeboe'; document.getElementById ( 'KlantVeld' ).className = 'KlantVerstopt'; } else { document.getElementById ( 'BarcodeVeld' ).className = 'BarcodeVerstopt'; document.getElementById ( 'KlantVeld' ).className = 'KlantKiekeboe'; } } </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 | <h2>Reparatie aanmelden</h2> <form action="#SITE_URL/task_add.php" method="post" name="TaskAdd" id="TaskAdd"> <table width="100%" border="0" cellspacing="0" cellpadding="1"> <tr> <td width="50%" align="left" valign="top">Bevat de PC een barcode?</td> <td width="50%" align="left" valign="top">Ja <input type="radio" name="Barcode" id="radio" value="y" onclick="Kiekeboe_a()" /> Nee <input type="radio" name="Barcode" id="radio2" value="n" onclick="Kiekeboe_b()" /></td> </tr> <tr id="BarcodeVeld" class="BarcodeVerstopt"> <td colspan="2"> <table width="100%" border="0" cellspacing="0" cellpadding="0" id="ReparatieTabel"> <tr> <td width="50%" align="left" valign="top"> <img src="#SITE_URL/include/images/toptoright.gif" />Barcode</td> <td width="50%" align="left" valign="top"><input type="text" name="BarcodeInputVeld" id="BarcodeInputVeld" onBlur="BarcodeCheck(this.value)" style="border: solid #7f9db9 1px;" /> <img src="#SITE_URL/include/images/reload.gif" onclick="BarcodeCheck(document.getElementById ( 'BarcodeInputVeld' ).value)" /></td> </tr> </table> </td> </tr> <tr id="KlantVeld" class="KlantVerstopt"> <td colspan="2"> <table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr> <td width="50%" align="left" valign="top"> <img src="#SITE_URL/include/images/toptoright.gif" />Naam</td> <td width="50%" align="left" valign="top"><input type="text" name="textfield2" id="textfield2" /></td> </tr> <tr> <td width="50%" align="left" valign="top"> <img src="#SITE_URL/include/images/toptoright.gif" />Telefoonnummer</td> <td width="50%" align="left" valign="top"><input type="text" name="textfield3" id="textfield3" /></td> </tr> </table> </td> </tr> <tr> <td align="left" valign="top" colspan="2"> </td> </tr> <tr> <td align="center" valign="top" colspan="2"><input type="image" name="imageField" src="#SITE_URL/include/images/buttons/task_toevoegen.jpg"></td> </tr> </table> <input type="hidden" name="sid" value="8f99d96f935336c7b8efb70944ff3105" /></form> </div> |
FF gaf me niks of ik ben blindquote:Op vrijdag 14 september 2007 23:38 schreef SuperRembo het volgende:
Je hebt geen element met id="Barcode", wel met name="Barcode". getElementById("Barcode") levert dus niets op. Alleen IE zoekt bij getElementById niet alleen op id maar ook op name.
(Die fout had je makkelijk zelf kunnen vinden als je naar de foutmelding had gekeken die Firefox geeft)
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 | { if ( document.getElementById ( 'Barcode' ).value == 'y' ) { document.getElementById ( 'BarcodeVeld' ).className = 'BarcodeKiekeboe'; document.getElementById ( 'KlantVeld' ).className = 'KlantVerstopt'; } else { document.getElementById ( 'BarcodeVeld' ).className = 'BarcodeVerstopt'; document.getElementById ( 'KlantVeld' ).className = 'KlantKiekeboe'; } } function Kiekeboe_b () { if ( document.getElementById ( 'Barcode' ).value == 'n' ) { document.getElementById ( 'BarcodeVeld' ).className = 'BarcodeKiekeboe'; document.getElementById ( 'KlantVeld' ).className = 'KlantVerstopt'; } else { document.getElementById ( 'BarcodeVeld' ).className = 'BarcodeVerstopt'; document.getElementById ( 'KlantVeld' ).className = 'KlantKiekeboe'; } } |
dan zou alleen onderstaande toch ook moeten werken? Dat ik bij beide radiobuttons zelfde functie aanroep? (alleen dat doet ie dus niet)quote:Op zaterdag 15 september 2007 21:07 schreef SuperRembo het volgende:
Beide functies doen eigenlijk hetzelfde: kijken naar de status van de radiobuttons en dan een van de twee velden tonen. Dus dat kan makkelijk in 1 functie.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | { if ( document.getElementById ( 'Barcode' ).value == 'y' ) { document.getElementById ( 'BarcodeVeld' ).className = 'BarcodeKiekeboe'; document.getElementById ( 'KlantVeld' ).className = 'KlantVerstopt'; } else { document.getElementById ( 'BarcodeVeld' ).className = 'BarcodeVerstopt'; document.getElementById ( 'KlantVeld' ).className = 'KlantKiekeboe'; } } |
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |