Deze OP: http://wiki.fok.nl/index.php/OP/Javascriptquote:Op vrijdag 25 januari 2008 20:08 schreef ralfie het volgende:
[..]
ik kan me er wel iets bij voorstellen. Firefox is gebouwd op een soort van javascript engine en daarom ook helemaal rond dat soort objects en children en whatnot. IE heeft een eigen platform wat javascript als het ware emuleert. Wat je dan krijgt is dat dit soort basale functies in firefox heel snel gaan (want basaal) en in IE trager (want wordt geemuleerd) terwijl iets als object.innerHTML in IE direct wordt verwerkt terwijl firefox met objects.childs.counts.removes ed. moet gaan emuleren omdat netjes te verwerken.
Dat is mijn theorie althans
dat klopt, deze hou ik tegoedquote:Op zaterdag 26 januari 2008 21:38 schreef ralfie het volgende:
ah, shit, ik had deze moeten maken
dit is geen verkapte tvp. echt niet
Ja, ik vond het ook al een zooitje. Volgens mij is dat er expres van gemaakt om de code onbegrijpelijk te houden or whatever. Iig top dat je er even na gekeken hebtquote:Op zondag 27 januari 2008 15:25 schreef fokME2 het volgende:
Wat een rotzooi, daar kan ik je ook niet 1 2 3 mee helpen.![]()
Is het niet een idee om zelf een kleine colorpicker in elkaar te zetten met een beperkt aantal kleuren? En eventueel zelf aan te vullen met een kleurcode?
Morgen ben ik weer op mijn studentenkamer, dan zal ik de website eens online zetten. Want voor een javascript-noob is het niet gemakkelijke dit uit te leggenquote:Op zondag 27 januari 2008 19:17 schreef Tarabass het volgende:
Voor mij niet iig
Misschien moet je eens op zoek gaan naar een tutorial waarin ze de lightbox inbouwen. Hopen dat je daar je antwoord krijgt op je probleem
quote:Op zondag 27 januari 2008 17:28 schreef Tarabass het volgende:
[..]
Ja, ik vond het ook al een zooitje. Volgens mij is dat er expres van gemaakt om de code onbegrijpelijk te houden or whatever.
Dat is wel duidelijk want hij doet het simpelweg niet. Thx voor de link, ga ik zo even bekijkenquote:Op zondag 27 januari 2008 20:36 schreef SuperRembo het volgende:
[..]
![]()
Nee, het is gewoon beroerde code. Niet zoals het anno 2008 zou moeten.
Deze is wel aardig, Niet hoe ik het zou doen, maar wel vrij netjes. Met tutorial.
Ik heb even wat in elkaar gebrouwen. Het doet het nu goed. Natuurlijk is feedback over de code welkomquote:Op zondag 27 januari 2008 15:25 schreef fokME2 het volgende:
Wat een rotzooi, daar kan ik je ook niet 1 2 3 mee helpen.![]()
Is het niet een idee om zelf een kleine colorpicker in elkaar te zetten met een beperkt aantal kleuren? En eventueel zelf aan te vullen met een kleurcode?
als-ie nou online zou zijn...quote:Op maandag 28 januari 2008 21:27 schreef Tarabass het volgende:
[..]
Ik heb even wat in elkaar gebrouwen. Het doet het nu goed. Natuurlijk is feedback over de code welkom
Ben er best trots op!
Een ding lukt me niet. In FF hebben de td's in de colorpicker wel een border, maar in Ie krijg ik dit niet voor elkaar. Iemand een idee hoe dit toch voor elkaar te krijgen?
1 2 3 4 5 6 7 8 9 10 11 12 13 | document.getElementById(aDiv).innerHTML='<table>'; var i=1; var j=1; for(i=1;i<=aRows;i++){ document.getElementById(aDiv).innerHTML+='\r\n<tr>'; for(j=1;j<=aCols;j++){ document.getElementById(aDiv).innerHTML+='\r\n<td><textarea></textarea></td>'; } document.getElementById(aDiv).innerHTML+='\r\n</tr>'; } document.getElementById(aDiv).innerHTML+='\r\n</table>'; } |
1 2 3 4 5 6 7 8 9 | for(i=1;i<=aRows;i++){ document.getElementById('bladie').value+='\r\n<tr>'; for(j=1;j<=aCols;j++){ document.getElementById('bladie').value+='\r\n<td><textarea></textarea></td>'; } document.getElementById('bladie').value+='\r\n</tr>'; } document.getElementById('bladie').value+='\r\n</table>'; |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <tr> <td><textarea></textarea></td> <td><textarea></textarea></td> <td><textarea></textarea></td> </tr> <tr> <td><textarea></textarea></td> <td><textarea></textarea></td> <td><textarea></textarea></td> </tr> <tr> <td><textarea></textarea></td> <td><textarea></textarea></td> <td><textarea></textarea></td> </tr> </table> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | aDiv = document.getElementById(aDiv); var tableCode = ''; tableCode += '<table>'; for (i = 0; i < aRows * aCols; i++) { if (i % aCols == 0) { tableCode += '<tr>'; } tableCode += '<td><textarea></textarea></td>'; if (i % aCols == aCols - 1) { tableCode += '</tr>'; } } if (i % aCols != 0) { tableCode += '</tr>'; } tableCode += '</table>'; aDiv.innerHTML = tableCode; } |
Het opruimen is voor naderhand, als het functioneel is.quote:Op dinsdag 29 januari 2008 12:55 schreef Tarabass het volgende:
Ik vind de code heel rommelig. i en j een value meegeven en in de for-loop weer. document.getElementById('bladie') kun je in een variable gooien.
quote:Op dinsdag 29 januari 2008 12:55 schreef Tarabass het volgende:
Je fout zit in het feit dat je de eerste for-loop maar 3 keer doorloopt. Deze zou je 9 keer moeten doorlopen. In die negen keer moet je kijken of het een cel of een rij wordt. Je wilt namelijk ook 9 textarea's, toch?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | function CreateDynamicTable(aDiv, aRows, aCols) { var table = '<table>'; var i=1; var j=1; for(i=1;i<=aRows;i++){ table += '\r\n<tr>'; for(j=1;j<=aCols;j++){ table +='\r\n<td><textarea></textarea></td>'; } table+='\r\n</tr>'; } table+='\r\n</table>'; document.getElementById(aDiv).innerHTML=table; } ?> |
Dat stukje code dat ik gaf werkt gewoon. Hoe je het dus ook interpreteert, je loopt de loop maar 3 keer door en dat moet 9 keer worden. Daarbij zal hij 3 keer zeggen dat het een row + cols moet zijn en 6 keer alleen een col. Code is getest en werktquote:Op dinsdag 29 januari 2008 13:01 schreef Tuvai.net het volgende:
[..]
Het opruimen is voor naderhand, als het functioneel is.
[..]
![]()
Het loopen klopt hoor. In het voorbeeld hierboven waren aRows en aCols beiden 3. In loop 1 gaat de code door de rijen, en in deze loop vindt ook weer een loop plaats die het aantal cellen aanmaakt. Wat dat betreft klopt dat stukje. Het probleem zit 'm hier in het feit dat de innerHTML output raar is, terwijl als ik de output als text naar een textarea parse, deze wel 100% correct is.
Tevens heb ik zojuist hetzelfde geprobeert met <div> jes in plaats van een <table> met daarin <tr> en <td> tags. Dit werkte wel. Alsof innerHTML me niet toelaat tabelletjes te maken. >_>
Hoe kom je toch bij die 3 keer?quote:Op dinsdag 29 januari 2008 13:08 schreef Tarabass het volgende:
Dat stukje code dat ik gaf werkt gewoon. Hoe je het dus ook interpreteert, je loopt de loop maar 3 keer door en dat moet 9 keer worden.
Bij het innerHTML gedeelte ging 'ie inderdaad de fout in. Het werkt nu; ik heb sowieso de tabel vervangen door <div>jes (het hele programma`tje/site`je is immers al conform XHTML strict opgebouwdquote:Op dinsdag 29 januari 2008 13:03 schreef fokME2 het volgende:
Ik had het vermoeden dat het fout ging bij het "innerHTML+= ...". De functie een heeeel klein beetje omgebouwd en hij werkt hier nu in Opera 9, Firefox 2 en IE6.
[ code verwijderd ]
Is het niet een idee om helemaal "netjes" met docum ent.createElement() en appendChild te werken?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | { var table = document.createElement('TABLE'); var row, cell; for (var j = 0; j < numRows; ++j) { row = table.insertRow(-1); for (var i = 0; i < numCols; ++i) { cell = row.insertCell(-1); cell.appendChild(document.createTextNode(i + ':' + j)); } } parent.appendChild(table); } |
Ja, je hebt gelijk. Je hebt de loopjes inderdaad wat anders staan en ik gaf mijn commentaar aan de hand van mijn snippet, waarin hij dus de loop maar 3 keer zou doorlopen en dus maar op 1 rij zou uitkomen. Verwarring van mijn kant, sorry daarvoor. Ik iig blij dat het gelukt is, die van jou is inderdaad mooier en korter. Denk dat ik dat snippetje even overneemquote:Op dinsdag 29 januari 2008 13:22 schreef Tuvai.net het volgende:
Hoe kom je toch bij die 3 keer?Zie je wel dat er een volledig andere loop (voor de <td> tags) in m'n eerste loop (voor de <tr> tags) staat? Sowieso worden het aantal rijen aangemaakt a.h.v. de eerste loop, en elke keer dat die plaatsvindt, word ook de loop daarbinnen aangeroepen. Zie m'n output naar het <textarea> element, die werkt gewoon.
Bah, remco! Jij komt ook altijd met een nog betere oplossingquote:Op dinsdag 29 januari 2008 13:23 schreef SuperRembo het volgende:
Of m.b.v. DOM functies:
[ code verwijderd ]
(Super)Rembo is met een b, desnoods met een k, maar nooit met een c!quote:Op dinsdag 29 januari 2008 13:29 schreef Tarabass het volgende:
[..]
Bah, remco! Jij komt ook altijd met een nog betere oplossing
Het is eigenlijk altijd beter om een property op het object te zetten i.p.v. een attribute met setAttribute().quote:Op dinsdag 29 januari 2008 13:43 schreef Tarabass het volgende:
setAttribute('id','naam_id');
Sorry, RemKoquote:Op dinsdag 29 januari 2008 14:10 schreef SuperRembo het volgende:
(Super)Rembo is met een b, desnoods met een k, maar nooit met een c!
Ik zou graag zo willen denken als jij (bah wat klinkt dat gay) maar dan zullen we wel moeten weten waarom het is. Dus waarom liever een property dan de functie setAttribute()?quote:Het is eigenlijk altijd beter om een property op het object te zetten i.p.v. een attribute met setAttribute().
Dus
el.id = "foo";
i.p.v.
el.setAttribute("id", "foo");
1 2 3 | el.setAttribute('class', 'foo'); // Werkt in FF, werkt niet in IE el.setAttribute('className', 'foo'); // Werkt in IE, werkt niet in FF |
Kortom die heb je niet echt nodig wanneer je toch al netjes je HTML in orde hebt.quote:Op dinsdag 29 januari 2008 16:44 schreef SuperRembo het volgende:
Het is korter en duidelijker.
Ik denk dat 't sneller is (maar heb ik niet getest)
Het kan problemen geven zoals bij het zetten van een class:
[ code verwijderd ]
Je zal wel setAttribute() moeten gebruiken als je later nog de innerHTML van het element wil ophalen (maar waarom zou je dat willen?)
getAttribute() heb je eigenlijk allen nodig als je een property wil opvragen die niet in de HTML standaard gedefinieerd is.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | { var table = document.createElement('TABLE'); var row, cell; for (var j = 0; j < numRows; ++j) { row = table.insertRow(-1); for (var i = 0; i < numCols; ++i) { cell = row.insertCell(-1); //Werkt alleen in FF onclickstring = 'showhide(\'' + parent + '\',\'' + parent.id + '\');setColor(\'' + curColor + '\'); return false'; cell.setAttribute('onclick',onclickstring); //Werkt cross-browsed maar wordt al aangeroepen bij het aanmaken van het table en niet bij klikken op cel cell.onclick = new function() {alert('Hello World!');}; cell.appendChild(document.createTextNode(i + ':' + j)); } } parent.appendChild(table); } |
1 |
Dat werkt wel maar is niet wat ik wil. Bovendien wordt de alert al aangeroepen bij het maken van het table, dus laat ik de table aanmaken dan krijg ik eerst 7*9 alert-boxjes, ipv één alert-boxje bij het klikken van een celquote:Op woensdag 30 januari 2008 13:58 schreef fokME2 het volgende:
[ code verwijderd ]
Geen new function, maar gewoon function (). Dan werkt het wel?
Tja, w3schools heeft wel een paar leuke voorbeelden, zo ook tizag. Verder is google natuurlijk je beste vriend..quote:Op woensdag 30 januari 2008 14:38 schreef Dzy het volgende:
[knip]
1 |
Dat is hem inderdaad bijnaquote:Op woensdag 30 januari 2008 15:06 schreef fokME2 het volgende:
@Tarabass: Als ik "function" doe ipv "new function" met jou functie dan wordt er alleen gealert als ik klik op een td? Zowel in IE6, FF2 en Opera 9?
[ code verwijderd ]
?
1 |
Schiet mij maar lek, maar ik begrijp je niet denk ik. Het werkt wel overigens hoor, maar begrijpen is een tweede.quote:Op woensdag 30 januari 2008 15:50 schreef fokME2 het volgende:
Dat is helemaal niet zo raar. Op het moment dat de backgroundcolor wordt geset is de loop nog bezig. Als de loop klaar is dan blijft curColor de kleur van de laatste cell. (Doe eens alert(curColor) na appendChild van de table.)
Als je op een cell klikt, dan wordt curColor uitgelezen wat op dat moment de laatste kleur is uit de loop.Een oplossing zou kunnen zijn om de achtergrondkleur van de cell waarop je klikt mee te geven aan de functie:
[ code verwijderd ]
Verdiep je eens in closuresquote:Op woensdag 30 januari 2008 16:29 schreef Tarabass het volgende:
[..]
Schiet mij maar lek, maar ik begrijp je niet denk ik. Het werkt wel overigens hoor, maar begrijpen is een tweede.
Waarom niet gewoon in een div zetten die met position:fixed gepositioneerd is?quote:Op donderdag 31 januari 2008 17:08 schreef wobbel het volgende:
Ik zoek voor onderstaande script een variant die WEL in Firefox werkt (dat doet deze dus NIET!!!).
Hij werkt in IE7 en IE6 wel, maar FF dus niet.
http://www.leejoo.nl/java/menu/rol_menu.htm iemand die dat kan oplossen of een andere weet die wel in FF werkt?
Zit er niets voor je bij op Dynamicdrive.com?quote:Op donderdag 31 januari 2008 17:08 schreef wobbel het volgende:
Ik zoek voor onderstaande script een variant die WEL in Firefox werkt (dat doet deze dus NIET!!!).
Hij werkt in IE7 en IE6 wel, maar FF dus niet.
http://www.leejoo.nl/java/menu/rol_menu.htm iemand die dat kan oplossen of een andere weet die wel in FF werkt?
1 2 3 4 5 6 7 | if ( eval(c) == "" ) { document.write("ERROR: onbekende variable"); } else { document.write(eval(c)); |
Waarom gebruik je eval?quote:Op maandag 4 februari 2008 23:36 schreef mcDavid het volgende:
ff een vraagje.
Ik laat een scriptje een input vergelijken met een lijst variables, en vervolgens de waarde van de bijbehorende variable plotten.
Maar als de input een niet bestaande variable is, loopt het script vast. Kan ik dit op een eenvoudige manier opvangen?
[ code verwijderd ]
zover was ik zelf al maar dit werkt dus niet
1 2 3 4 5 6 | { document.write("ERROR: onbekende variable"); } else { document.write(eval(c)); } |
Nee, niet helemaal. De functie document.getElementsByName bestaat alleen in IE, niet in Firefox en Opera. Je kunt beter iets gebruiken als document.forms[0].elements["naamVanHetVeld"], dat werkt in elke browser.quote:Op dinsdag 5 februari 2008 20:21 schreef mcDavid het volgende:
nog een (n00b)vraagje trouwens: is het mogelijk om in plaats van document.getElementById("id") iets soortgelijks te doen maar dan met de naam?
Zodat je bijv. de waarde kunt krijgen van een input die alleen een naam heeft.
-edit-
oh het is getElemtsByName
Het werkt in firefox, en dat is genoeg, want het was voor een greasemonkey scriptje!quote:Op woensdag 6 februari 2008 00:05 schreef SuperRembo het volgende:
[..]
Nee, niet helemaal. De functie document.getElementsByName bestaat alleen in IE, niet in Firefox en Opera. Je kunt beter iets gebruiken als document.forms[0].elements["naamVanHetVeld"], dat werkt in elke browser.
12 installs in één dag is toch best goed volgens mijquote:Op woensdag 6 februari 2008 00:23 schreef mcDavid het volgende:
[..]
Het werkt in firefox, en dat is genoeg, want het was voor een greasemonkey scriptje!
Als het niet lukt, maak dan een achtergrondplaatje met de tekst 'wachtwoord' dat verdwijnt als je er op klikt?quote:Op donderdag 14 februari 2008 16:46 schreef Flaccid het volgende:
Ik heb een textbox met value = 'Password'. Nu wil ik onclick het type veranderen naar een password field, en de textbox legen. this.type='password' werkt hier niet in IE
onclick='this.class='bg.png' , en dan anders de class='textbg.png' bijvoorbeeld?quote:Op donderdag 14 februari 2008 21:06 schreef PiRANiA het volgende:
[..]
Als het niet lukt, maak dan een achtergrondplaatje met de tekst 'wachtwoord' dat verdwijnt als je er op klikt?
className @ javascriptquote:Op donderdag 14 februari 2008 21:26 schreef Flaccid het volgende:
[..]
onclick='this.class='bg.png' , en dan anders de class='textbg.png' bijvoorbeeld?
Bij A List Apart staat een mooie oplossing beschreven: http://www.alistapart.com(...)formsmoreaccessible/quote:Op donderdag 14 februari 2008 16:46 schreef Flaccid het volgende:
Ik heb een textbox met value = 'Password'. Nu wil ik onclick het type veranderen naar een password field, en de textbox legen. this.type='password' werkt hier niet in IE
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 | for(x=180;x>0;x=x-30) { newleft = parseInt(document.getElementById('bar').style.left); if (newleft > 0) { break; } window.setTimeout('step(' + x + ')', x); } } function right(max) { for(x=180;x>0;x=x-30) { newleft = parseInt(document.getElementById('bar').style.left); newright = newleft + max; if (newright < 700) { break; } window.setTimeout('step(-' + x + ')', x); } } function step(step) { document.getElementById('bar').style.left = parseInt(document.getElementById('bar').style.left) + step; } |
>= betekent wat anders dan >, dus lijkt me stug.quote:Op woensdag 20 februari 2008 00:53 schreef mcDavid het volgende:
Volgens mij werkt'ie hier in Fx gewoon goed hoor? (2.0.0.12)
Volgens mij is het officieel wel zo dat je bij vergelijkingen in een if-statement altijd twee vergelijkingstekens moet gebruiken
dus <=, >=, == enz. in plaats van <, > en =
Dat is onzin. Je moet natuurlijk wel goed letten op het verschil tussen = en ==.quote:Op woensdag 20 februari 2008 00:53 schreef mcDavid het volgende:
Volgens mij is het officieel wel zo dat je bij vergelijkingen in een if-statement altijd twee vergelijkingstekens moet gebruiken
dus <=, >=, == enz. in plaats van <, > en =
Bij = en == klopt het wel.quote:Op woensdag 20 februari 2008 14:11 schreef mcDavid het volgende:
ik weet het verschil in betekenis, maar had zelf een keer een scriptje dat alleen werkte met dubbele == enzo. Maar wellicht kwam dat dan wel juist door het verschil in betekenis.
Lijkt me ook niet. Wat is 't probleem dan? Heb je een voorbeeld online?quote:Op maandag 3 maart 2008 14:54 schreef mcDavid het volgende:
Is Opera zo slecht met Javascript of ligt het echt aan mij?
http://zcflevo.nl/files/thumbnails.js Zo pittig is de functie openinfo(y) toch ook weer niet?
Dat laatste wou ik nou juist liever niet. Is kut voor de structuur. Op de indexpagina zou het (zoals 'ie nu is) misschien nog kunnen maar op de andere pagina's is het rot.quote:Op maandag 3 maart 2008 18:57 schreef SuperRembo het volgende:
Ik zie ook niet wat er fout gaat.
Misschien een andere oplossing zoeken. Als je ook ergens een linkje toevoegt om het eerste info schermpje (met het weer) te laten zien dan heb je die terug knop niet nodig. Of laat de iframe altijd zien, en laadt er als eerste de weer-info in.
Doen!quote:Op maandag 3 maart 2008 19:12 schreef mcDavid het volgende:
[..]
Dat laatste wou ik nou juist liever niet. Is kut voor de structuur. Op de indexpagina zou het (zoals 'ie nu is) misschien nog kunnen maar op de andere pagina's is het rot.
Moet toch maar es PHP onder de knie zien te krijgen. Dan heb ik helemaal geen iframes meer nodig.
Omdat document.all false oplevert in Firefox?quote:Op donderdag 13 maart 2008 10:07 schreef wobbel het volgende:
Hellep
Waarom doet http://www.dumpzooi.nl/v2/TEST.php het wel in IE7, maar niet in Firefox?
aah me is not so smartquote:Op donderdag 13 maart 2008 13:11 schreef SuperRembo het volgende:
[..]
Omdat document.all false oplevert in Firefox?
1 2 3 4 5 | var geontleed=teontledenvariable.split(","); alert ( geontleed[0] ); // poept 255 uit alert ( geontleed[1] ); // poept 123 uit alert ( geontleed[2] ); // poept 88 uit |
1 2 3 4 5 6 7 | alert ( rgbwaarde ); // geeft een goede RGB code terug, dus deze waarde bestaat var teontledenvariable=rgbwaarde; var geontleed=teontledenvariable.split(","); alert ( geontleed[0] ); // ik krijg niks alert ( geontleed[1] ); // ik krijg niks alert ( geontleed[2] ); // ik krijg niks |
1 2 3 4 5 6 7 8 | rgbwaarde = myColorPicker.CurColor; // deze waarde komt van een javascript colorpicker alert ( rgbwaarde ); // geeft een goede RGB code terug, dus deze waarde bestaat var teontledenvariable=rgbwaarde.toString(); var geontleed=teontledenvariable.split(","); alert ( geontleed[0] ); // ik krijg niks alert ( geontleed[1] ); // ik krijg niks alert ( geontleed[2] ); // ik krijg niks |
document.getElementById('element').innerHTML=document.getElementById('element_met_src').src;quote:Op vrijdag 14 maart 2008 15:08 schreef Swetsenegger het volgende:
Ik wil bij een onclick de innerhtml van een element vullen met de src van een andere html.
Is dat uberhaupt mogelijk? document.getElementById('element').innerHTML.src='path/naar/html' werkt niet in ieder geval
Wat je wilt is een javascript include.quote:Op vrijdag 14 maart 2008 15:18 schreef Swetsenegger het volgende:
Dank je, maar er is dus geen element met een src, ik wil vanaf filesysteem een html src inladen in de innerhtml
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |