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: |