FOK!forum / Digital Corner / [Javascript] voor dummies deel 5
mscholmaandag 11 december 2006 @ 23:43


De (voorlopige) OP van de [Javascript] voor dummies reeks.
Hier kan je alle vragen stellen over Javascript en alles wat er mee te maken heeft.

Heb je een probleem, post dan ook even de code waar het probleem zit Zo kunnen we je beter proberen te helpen.

Vorige delen:
[Javascript] voor dummies - Deel 1
[Javascript] voor dummies - Deel 2
[Javascript] voor dummies - deel 3
[Javascript] voor dummies - deel 4
{hier de link van het vorige deel}

Handige links:
Quircksmode Javascript
Javascript Cheat Sheet
Mis je een link? Geef even een gil in het topic

Tutorials:
W3Schools Javascript
W3Schools AJAX

Laatste posts uit het vorige topic:
quote:
Op maandag 11 december 2006 23:39 schreef Litpho het volgende:

[..]

Geef je aan de functie alleen de buttonnaam mee, of het buttonobject (evt. opgehaald met iets als document.getElementById)?
quote:
Op maandag 11 december 2006 23:41 schreef mschol het volgende:

[..]

alleen button naam m.b.v. this.name
Deze OP: http://wiki.fok.nl/index.php/OP/Javascript
Litphomaandag 11 december 2006 @ 23:46
Ah. Je probeert een property (disabled) te veranderen van een buttonobject maar in plaats daarvan zet je een property (disabled) van een stringobject.

Kijk of je in je HTML-code dezelfde buttonnaam ook als id kan opnemen en neem in je javascript de volgende code op:
1
2
3
4
5
6
7
function AddFile(place,file,button)
{
var btn = document.getElementById(button);
   newWindow = window.open('add.php?path='+place+'&file='+file,"add_file","status=0,menubar=0,height=250,width=100,top=60px,left=100px");
   btn.disabled=true;
   newWindow.focus();
}
mscholmaandag 11 december 2006 @ 23:49
quote:
Op maandag 11 december 2006 23:46 schreef Litpho het volgende:
Ah. Je probeert een property (disabled) te veranderen van een buttonobject maar in plaats daarvan zet je een property (disabled) van een stringobject.

Kijk of je in je HTML-code dezelfde buttonnaam ook als id kan opnemen en neem in je javascript de volgende code op:
[ code verwijderd ]
ik loop altijd met dit verschil te vechten, en nog steeds vergeet ik het
maar dan wordt me ID 'NULL' ik ga zelf nog eff vechten, ben in iedergeval weer een eind verder

wel this.name naar this.id veranderen

anyways et werkt

[ Bericht 14% gewijzigd door mschol op 11-12-2006 23:58:22 ]
SuperRembodinsdag 12 december 2006 @ 00:02
Waarom de name of id doorgeven als je de button zelf al kent?

1
2
3
function test(button) {
   button.disabled = true;
}


1<input type="button" onclick="test(this);return false;" value="Test">


En de name doorgeven en dan getElementById() gebuiken lijkt me ook niet handig. Misschien dat het in IE werkt, maar in FF uiteraard niet (en terecht!).
Litphodinsdag 12 december 2006 @ 00:05
quote:
Op dinsdag 12 december 2006 00:02 schreef SuperRembo het volgende:
En de name doorgeven en dan getElementById() gebuiken lijkt me ook niet handig. Misschien dat het in IE werkt, maar in FF uiteraard niet (en terecht!).
Er was een reden dat ik erbij zette dat je de naam ook als id-waarde moest opnemen in je HTML .

Het komt nog wel eens voor dat ik wel een naam/id heb (bijv. teruggegeven vanuit een AJAX-callback) maar niet een object. Anders kan je inderdaad net zo goed het object meegeven.
mscholdinsdag 12 december 2006 @ 00:06
quote:
Op dinsdag 12 december 2006 00:02 schreef SuperRembo het volgende:
Waarom de name of id doorgeven als je de button zelf al kent?
[ code verwijderd ]


[ code verwijderd ]

En de name doorgeven en dan getElementById() gebuiken lijkt me ook niet handig. Misschien dat het in IE werkt, maar in FF uiteraard niet (en terecht!).
name doorgeven werkt ook niet, id doorgeven daarin tegen werkt vlekkeloos..
het kan vast beter maar aangezien een een eigen brouwseltje is dat op een lokale webserver draait waar nooit iemand bij kan komen behalve ikzelf hoeft de code niet geoptimalizeerd te worden
thnx for de input overigens
Chandlerdinsdag 12 december 2006 @ 08:50
tvp voor de toekomst
rickmanszaterdag 30 december 2006 @ 20:18
Ik zit weer eens te stoeien met IE, maar ik kom er niet uit. IE kan (zoals wellicht bekend) het niet aan dat je een input element nog aanpast, nu had ik daar een workaround voor gevonden, maar ik krijg het niet aan de praat.

Het gaat om de volgende twee functies:
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
function createUpload(numberOfElements, objectId){
  var element = document.getElementById(objectId);
  
  for (var x = 1; element.childNodes.length > 0; x++){
    element.removeChild(element.firstChild);
  }
  
  for(var i = 1; i <= numberOfElements; i++){
    createNewElement(objectId, "", "input", {type: "file", name: "uploadFile[]"}, "");
  }
}

function createNewElement(parent, beforeWhat, name, attrs, text) {
    var parent                                    =   document.getElementById(parent);
    try { 
      /*
       IE fix for input elements
      */
      if (attrs){
        var attributes                            =   "<" + name +" ";
        for (key in attrs) {
          attributes                              +=  key +"=""+ attrs[key] +"" ";
        }
        attributes                                +=  ">";
      }
      
      var e                                       =   document.createElement(attributes);
    } 
    catch (element) {
    }
    
    if (!e || e.nodeName != type.toUpperCase()) {
      var e                                       =   document.createElement(name);
      
      if (attrs) {
        for (key in attrs) {
          switch(key){
            case "class":
              e.className                             =   attrs[key];
            break;
            
            case "id":
              e.id                                    =   attrs[key];
            break;
            
            case "name":
            break;
            
            default:
              e.setAttribute(key, attrs[key]);
          } 
        }
      }
    }
  
  
  if (text) {
    e.appendChild(document.createTextNode(text));
  }
  
  if(beforeWhat != ""){
    var beforeWhat                                =   document.getElementById(beforeWhat);
    parent.insertBefore(e, beforeWhat);
  }
  else{
    parent.appendChild(e);
  }
}


Hoe krijg ik het aan de praat in IE?
SuperRembozaterdag 30 december 2006 @ 23:38
Hier heb je lopen klooten met quotjes:
1          attributes                              +=  key +"=""+ attrs[key] +"" ";


Hier bestaat 'type' niet, zal waarschijnlijk iets met attrs['type'] moeten zijn
1    if (!e || e.nodeName != type.toUpperCase()) {



Beetje lomp om zo'n heel blok in een try/catch te zetten terwijl je makkelijk kan bepalen of je met IE te maken hebt. Dan hoeven andere browsers niet onnodig die code uit te voeren die toch niet gaat werken.

En wat een ranzige uitlijning van je code
rickmanszondag 31 december 2006 @ 10:03
quote:
Op zaterdag 30 december 2006 23:38 schreef SuperRembo het volgende:
Hier heb je lopen klooten met quotjes:
[ code verwijderd ]
dat was FOK!, niet ik , in de paste stond het goed
quote:
Hier bestaat 'type' niet, zal waarschijnlijk iets met attrs['type'] moeten zijn
[ code verwijderd ]
dat zal hem wellicht zijn idd .
quote:
Beetje lomp om zo'n heel blok in een try/catch te zetten terwijl je makkelijk kan bepalen of je met IE te maken hebt. Dan hoeven andere browsers niet onnodig die code uit te voeren die toch niet gaat werken.
Persoonlijk vind ik browsersniffing nog ranziger en onderhoudsonvriendelijker .
quote:
En wat een ranzige uitlijning van je code
persoonlijke smaak
Litphozondag 31 december 2006 @ 13:08
quote:
Op zondag 31 december 2006 10:03 schreef rickmans het volgende:
persoonlijke smaak
Leuke link . Dan nog zou ikzelf de assignment targets niet allemaal ergens op ver rechts uitlijnen, maar zoals je zegt, dat is persoonlijke smaak (en niets wat een goede code formatter niet ongedaan kan maken ).
mscholzondag 31 december 2006 @ 13:57
quote:
Op zaterdag 30 december 2006 23:38 schreef SuperRembo het volgende:
En wat een ranzige uitlijning van je code
vind ik ook maar das zoals eerder gezegd persoonlijke smaak,
ik houd van veel ruimt zodat het snel te lezen is (voor mij iig)
SuperRembozondag 31 december 2006 @ 14:38
En wat is dan bijvoorbeeld een goede code formatter voor javascript? En dan liefst een die niet op z'n bek gaat bij een flinke hoeveelheid code.
mscholzondag 31 december 2006 @ 16:04
het vragen van de grootte van een venster, hoe doe ik dat?
ik dacht altijd via window.width of window.height
maar ik lees iets over innerwidth en outerwidth
Jimbozondag 31 december 2006 @ 16:06
lol ik kijk net in de topic en ik denk wtf doet dit in ONZ..... zit ik in DIG
SuperRembozondag 31 december 2006 @ 16:17
De property's voor de breedte en hoogte van een window hangen af van de browser. Bij IE hangt het er ook nog van af of het een normaal window of een modal dialog is.

Zie bijv. http://www.quirksmode.org/js/winprop.html
super-muffindonderdag 11 januari 2007 @ 10:58
1
2
3
4
5
6
7
8
9
10
11
12
function styleAbbr() {
   var oldBodyText, newBodyText, reg;

   oldBodyText = document.body.innerHTML;
   reg = /<abbr([^>]*)>([^<]*)</abbr>/g;
   newBodyText = oldBodyText.replace(reg, '<abbr $1><span class="abbr" $1>$2</span></abbr>');
   document.body.innerHTML = newBodyText;
}

window.onload = function(){
   styleAbbr()
}


Ik heb dit script (gekregen van iemand) Om in Internet Explorer er voor te zorgen dat de abbr tag toch 'werkt'
Maar in Internet Explorer werkt het juist niet. In Firefox wel. Maar daar hoeft het niet want de abbr tag werkt daar gewoon.

Dus, wat is er fout aan dat het niet in IE werkt?
Litphodonderdag 11 januari 2007 @ 11:29
Misschien een idee om de slash in je regular expression te escapen met een backslash?
1   reg = /<abbr([^>]>([^<]<\/abbr>/g;
super-muffindonderdag 11 januari 2007 @ 12:08
Staat 'ie ook, maar Fok! neemt em niet over.

Hier staat een online voorbeeld.
http://lab.danielpunt.nl/abbr.html
Litphodonderdag 11 januari 2007 @ 12:19
Om de een of andere reden haalt hij <p><abbr title="Cascading Style Sheets">CSS</abbr></p> op met de elementen in uppercase. Voeg ignore case toe aan je regexp en het werkt bij mij in IE.
super-muffindonderdag 11 januari 2007 @ 12:24
uhm, ik ben niet zo goed in JavaScript. Maar ik ga het proberen. Zo leer ik er ook nog eens van
Dank je wel
SuperRembodonderdag 11 januari 2007 @ 13:31
Lijkt me geen lekker scriptje om op iets grotere pagina's te gebruiken. IE zal de pagina op deze manier altijd 2x moeten opbouwen. Helemaal lullig in IE7, want die ondersteunt de abbr tag wel.
super-muffindonderdag 11 januari 2007 @ 13:49
Het gaat ook niet gebruikt worden op grote pagina's.
En kan ik niet filteren op lagere versie's dan IE 6?

Anders moet ik het in PHP gaan maken.
SuperRembodonderdag 11 januari 2007 @ 16:26
Je kunt 't met conditional comments verbergen voor browser die 't wel ondersteunen.

1
2
3
4
5
6
7
8
<!--[if IE lt 7]>
<script type="text/javascript">
window.onload = function() {
   var b = document.body;
   b.innerHTML = b.innerHTML.replace(/<abbr([^>]*)>([^<]*)<\/abbr>/gi, '<abbr $1><span class=\"abbr\" $1>$2</span></abbr>');
}
</script>
<![endif]-->


(niet echt getest)
super-muffindinsdag 16 januari 2007 @ 12:06
Oh stom, niet aan gedacht. Er staat 1 klein foutje in jou code:
1
2
3
<!-- if lt IE 7]>
//code
<![endif]-->

Zo werkt het wel :) Dank!
Siegfriedmaandag 5 februari 2007 @ 15:58
Korte vraag; kun je bij een alertbox de text op de OK-button veranderen?
Zo ja; hoe?
SuperRembomaandag 5 februari 2007 @ 18:30
Kort antwoord: nee.
Siegfriedmaandag 5 februari 2007 @ 18:36
Helaas. Zo'n vermoeden had ik al.
koekiemonsterwoensdag 7 februari 2007 @ 12:46
ik heb nu een cms waarmee ik door middel van js bepaalde informatie in een contentveld plaats.
nu wil ik deze informatie omvormen.

ik plaats door middel van een knop een javascript string, waarmee ik filmpjes kan tonen.
Nu wil ik onload een aantal elementen uit deze string filteren.
Het kan dus voorkomen dat onderstaande string meerdere keren voorkomt, met andere waarden.

Welke waarden wil ik filteren?
- width-waarde;
- height-waarde;
- van flashvars, de naam achter file=
- van flashvars de waarde achter img=

Dit is zo'n string, maar in mijn editor kunnen er dus bijvoorbeeld wel 10 vookomen.
quote:
<p id="player1881">
<a href="http://www.macromedia.com/go/getflashplayer">Get the Flash Player</a> to see this player.
</p>

<script type="text/javascript">
var FO = {
movie:"player.swf",
width:" 200" ,
height:"200",
majorversion:"7",
build:"0",
bgcolor:"#FFFFFF",
flashvars:"file=/lynx/uploads/Flash/test.flv&showdigits=true&backcolor=0xABD7FE&showicons=true&image=bla.jpg"
};
UFO.create(FO, "player1881");
</script>


Hoe kan ik op de makkelijkste manier hierdoorheen loopen en de gewenste waarden filteren?
koekiemonsterwoensdag 7 februari 2007 @ 17:30
help?
SuperRembowoensdag 7 februari 2007 @ 18:03
quote:
Op woensdag 7 februari 2007 17:30 schreef koekiemonster het volgende:
help?
Niet al te ongeduldig doen he.


Met String.replace() en een regexp moet je een heel eind kunnen komen.
Chandlerwoensdag 7 februari 2007 @ 19:50
Leuke vraag denk ik:

Stel ik wil een POPUP op een website en deze popup wil ik maar 1x laten zien! nu hebben genoeg mensen een popup blokker dus als mensen de pagina reloaden dan krijgen ze de popup niet meer te zien. Nu wil ik alleen de popup laten verdwijnen als de popup daadwerkelijk is geopend.. hoe realiseer ik dit?
SynchroStevewoensdag 7 februari 2007 @ 20:03
quote:
Op woensdag 7 februari 2007 19:50 schreef Chandler het volgende:
Leuke vraag denk ik:

Stel ik wil een POPUP op een website en deze popup wil ik maar 1x laten zien! nu hebben genoeg mensen een popup blokker dus als mensen de pagina reloaden dan krijgen ze de popup niet meer te zien. Nu wil ik alleen de popup laten verdwijnen als de popup daadwerkelijk is geopend.. hoe realiseer ik dit?
Met een cookie?
Chandlerdonderdag 8 februari 2007 @ 09:25
Cookie wordt toch ook aangemaakt wanneer de popup zich niet laat zien?
ralfiedonderdag 8 februari 2007 @ 09:51
quote:
Op donderdag 8 februari 2007 09:25 schreef Chandler het volgende:
Cookie wordt toch ook aangemaakt wanneer de popup zich niet laat zien?
Je kunt de popup het koekje laten bakken
Chandlerdonderdag 8 februari 2007 @ 16:01
true true, ik zal er eens naar kijken
Chandlerwoensdag 14 februari 2007 @ 14:27
Een andere vraag.

Ik heb de volgende scripts

popback.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<script language="javascript">
function popUp()
{
    day = new Date();
    id = day.getTime();
    window['page'+id] = window.open('popback1.html', id , 'toolbar=0,scrollbars=1,location=0,statusbar=1,menubar=0,resizable=0');
}
</script>

<form method="post" name="userinfo">
    <input type="text" name="name"><br/>
    <input type="text" name="cijfer"> - <a href="#" onClick="javascript:popUp();">Select</a><br/>
    <input type="submit" name="send" value="Verstuur">
</form>


en popback1.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<script language="javascript">
function returnVariable(formName, fieldName, content)
{
  opener.document.forms[formName].elements[fieldName].value = content;
}

function wclose()
{
    window.close();
}
</script>

<form name="cijfertjes">
    <input type="text" name="cijfer"> 
    <input type="submit" name="Verzend" onclick="returnVariable('userinfo','cijfer',  this.form.elements['cijfer'].value); wclose();">
</form>


Nu wil ik eingelijk het volgende.. De popup zit nu vast aan 1 veld, maar ik zou eingelijk variabelen mee willen geven aan de popup zodat ik de return veld variabel kan maken.

Heeft iemand een idee

ook van wat ik bedoel?
ralfiewoensdag 14 februari 2007 @ 14:40
je kunt je variabelen in de url meegeven, een beetje zoals php en $_GET:

1
2
3
//popback.html
var returnvar='cijfer';
...window.open('popback1.html?returnvar='+returnvar...

en deze dan uitlezen dmv substrings vanaf window.location.href

óf je leest de variabele rechtstreekt uit van de opener:
1
2
//popback1.html
onclick=returnvariable(opener.returnform, opener.returnvar, this.form.elements['cijfer'].value)"

Waar returnform en returnvar de variablen in de opener zijn met de juiste waarden:;
1
2
3
//popback.html
var returnform='userinfo';
var returnvar='cijfer';
Chandlerwoensdag 14 februari 2007 @ 18:18
Ik heb nu dit

1
2
3
4
5
6
7
8
9
10
11
12
<script language="javascript">
function colPalet(value)
{
    day = new Date();
    id  = day.getTime();

    var retvalue = value;

    window['page'+id] = window.open('./layout/layout_colors.html?varname=' + value, id , 'width=300,height=200,toolbar=0,scrollbars=1,location=0,statusbar=1,menubar=0,resizable=0');

}
</script>


en dan de popup

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<script language="javascript">
function returnVariable(fieldName, content)
{
  opener.document.forms['colortable'].elements[fieldName].value = content;
}

function wclose()
{
    window.close();
}

function SendColor(value)
{
    alert(opener.retvalue);
    returnVariable(opener.varname, value)
}
</script>

<MAP name=map_webpal>

<!--- Row 1 --->

<AREA shape=RECT coords=2,2,18,18 href="javascript:SendColor('#330000')">
... etc


maar krijg een undefined te zien bij de alert in FF en IE :X why?
ralfiewoensdag 14 februari 2007 @ 18:33
Je definieert retvalue in een functie... Zelfs een simpele taal als Javascript kent scoping
Chandlerwoensdag 14 februari 2007 @ 19:11
omg, je hebt gelijk... heb het nu anders aangepakt en gewoon een variabel gezet in de geopende window

bv (even uit het hoofd)

opener.valuename = 'value';

Geqxondinsdag 20 februari 2007 @ 15:57
Ik heb een textbox met als value een datum in het volgende formaat:
1DD-MM-YYYY

Nu wil ik de dag die er op volgt weten, en weer terugschrijven. Mijn code:
1
2
3
4
5
6
7
var currentdate = document.getElementById('chosendate').value;
var newdate = new Date(currentdate.substring(6,10), currentdate.substring(3,5) - 1, currentdate.substring(0,2));
newdate.setTime(newdate.getTime() - 86400000);
newday = newdate.getDate();
newmonth = newdate.getMonth() +1;
newyear = newdate.getFullYear();
changevalue(newday + "-" + newmonth + "-" + newyear,'chosendate');


Het werkt prima, het enige nadeel van getDate en getMonth is dat ze er geen nul voor plakken wanneer de integer uit 1 digit bestaat (januari = 1, moet 01 zijn). Moet ik hier met een lapje code handmatig een 0 aan plakken, of is er een variant op getDate en getMonth?

Edit

Dat kon nog korter dan ik dacht
1
2
if (newday<=9) newday = "0" + newday;
if (newmonth<=9) newmonth = "0" + newmonth;


En voor de nieuwsgierige personen de volledige code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
function dateButtons(dir){
   var currentdate = document.getElementById('chosendate').value;
   var newdate = new Date(currentdate.substring(6,10), currentdate.substring(3,5) - 1, currentdate.substring(0,2));

   if (dir == 'left')
      newdate.setTime(newdate.getTime() - 86400000);
   
   else if (dir == 'right')
      newdate.setTime(newdate.getTime() + 86400000);
   

   newday = newdate.getDate();
   if (newday<=9) newday = "0" + newday;
   newmonth = newdate.getMonth() +1;
   if (newmonth<=9) newmonth = "0" + newmonth;
   newyear = newdate.getFullYear();

   changevalue(newday + "-" + newmonth + "-" + newyear,'chosendate');
}


[ Bericht 35% gewijzigd door Geqxon op 20-02-2007 16:14:23 ]
SuperRembodinsdag 20 februari 2007 @ 22:25
Javascript heeft standaard geen formatting functies, eigenlijk best onhandig. Ik heb deze functies een keer gemaakt. Ik ze nooit echt gebruikt, en ook niet grondig getest.

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
/*
   Converts the date to string using provided formatting.
   %D = full date (%d/%m/%Y)
   %T = full time (%H:%i:%s)
   %Y = year (4 digits)
   %y = year (2 digits)
   %m = month (01 - 12)
   %d = day (01 - 31)
   %H = hours (01 - 24)
   %h = hours (01 - 12)
   %i = minutes (01 - 59)
   %s = seconds (01 - 59)
   %A = AM/PM
   %% = %
*/
Date.prototype.format = function(format) {
   format = format.replace(/%D/g, "%d/%m/%Y");
   format = format.replace(/%T/g, "%H:%M:%S");

   format = format.replace(/%Y/g, this.getFullYear());
   format = format.replace(/%y/g, (this.getFullYear() % 100).toString().padLeft(2, '0'));
   format = format.replace(/%m/g, (this.getMonth () + 1).toString().padLeft(2, '0'));
   format = format.replace(/%d/g, this.getDate().toString().padLeft(2, '0'));

   format = format.replace(/%H/g, this.getHours().toString().padLeft(2, '0'));
   format = format.replace(/%h/g, ((this.getHours() + 11) % 12 + 1));
   format = format.replace(/%i/g, this.getMinutes().toString().padLeft(2, '0'));
   format = format.replace(/%s/g, this.getSeconds().toString().padLeft(2, '0'));
   format = format.replace(/%A/g, (this.getHours() < 12 ? "AM" : "PM"));
   format = format.replace("%%", "%");

   return format;
}

/*
   Pads a string on the left to a certain length with another string.
*/
String.prototype.padLeft = function(length, padding) {
   if (padding == '' || padding == null) padding = ' ';
   var result = this;
   var n = (length - this.length);
   if (n > 0) {
      while (padding.length < n) {
         padding += padding;
      }
      result = padding + result;
      result = result.substr(length - result.length);
   }
   return result;
}


1
2
3
var d = new Date();
var s = d.format('%D %T');
alert(s);


Date.format() kan ook nog wel wat geoptimaliseerd worden
Geqxondinsdag 20 februari 2007 @ 23:06
Mooie functie, die gaat even gebookmarked worden

Voor simpele dingen om bijvoorbeeld binnen een functie de huidige datum te verkrijgen (in bovenstaand formaat), gebruik ik PHP
Swetseneggerdinsdag 27 februari 2007 @ 16:04
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<html>
   <head>
      <title>test</title>
      <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
      <script type="text/javascript">
      document.getElementById('display').innerHTML= 'test';
      </script>
   </head>
   <body>
      <div id="display" name="display">
         leeg
      </div>
   </body>
</html>
quote:
document.getElementById('display') has no properties
Ik begrijp niet wat ik fout doe?
Geqxondinsdag 27 februari 2007 @ 16:08
Zo uit mijn hoofd zou ik zeggen dat het niet werkt omdat het javascript uitgevoerd wordt nog voordat de div "display" op het scherm getekend is / geinitialiseerd is. Misschien er een functie van maken, en die in de onload gooien?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<html>
   <head>
      <title>test</title>
      <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
      <script type="text/javascript">
         function test(){
               document.getElementById('display').innerHTML= 'test';
         }
      </script>
   </head>
   <body onload="test()">
      <div id="display" name="display">
         leeg
      </div>
   </body>
</html>
Swetseneggerdinsdag 27 februari 2007 @ 16:09
quote:
Op dinsdag 27 februari 2007 16:08 schreef Geqxon het volgende:
Zo uit mijn hoofd zou ik zeggen dat het niet werkt omdat het javascript uitgevoerd wordt nog voordat de div "display" op het scherm getekend is / geinitialiseerd is. Misschien er een functie van maken, en die in de onload gooien?
Dit is de versimpelde versie, hij wordt aangeroepen door een functie die na een submit wordt aangeroepen.
Geqxondinsdag 27 februari 2007 @ 16:11
Weet je zeker dat het niet ergens anders in zit? De code zoals ik die aan mijn post gehangen heb werkt onder Safari 2.0 namelijk prima, foutloos.
Darkomendinsdag 27 februari 2007 @ 16:39
edit, lezen.

Ik heb trouwen geen probs met je script, werkt direct, misschien toch ff de volledige code?

[ Bericht 83% gewijzigd door Darkomen op 27-02-2007 16:46:38 ]
Swetseneggerdinsdag 27 februari 2007 @ 16:58
Opgelost, klein foutje met returns
fokME2dinsdag 27 februari 2007 @ 18:20
Gaaf m'n op gebruikt (tevens tvp )
Swetseneggerwoensdag 28 februari 2007 @ 08:49
Nieuw probleem.
Uit een form komen een paar values die ik met de volgende regel code naar een textarea schrijf:

1document.getElementById('display').innerHTML+= '0000'+form.kenmerk.value+form.gba.value+form.bsn.value+'\r\n';

uiteraard met enkele slashes, maar dit om de fokbug te vermijden
Dat gaat goed, in mijn textarea verschijnt elke invoer netjes regel voor regel op een newline.
Maaaar... deze textarea moet uiteindelijk naar een txt file geschreven worden, waarvoor ik de v olgende code gebruik

1
2
3
4
5
6
7
function WriteToFile(sText)
      {
      var fso = new ActiveXObject("Scripting.FileSystemObject");
      var FileObject = fso.OpenTextFile("C:\Temp\PimFile.txt", 2, true,0); // 8=append, true=create if not exist, 0 = ASCII
      FileObject.write(sText)
      FileObject.close()
      }

Deze schrijft prachtig naar een txt file, maar mijn newlines zijn weg :?
Als ik in dezelfde textarea tussen 2 regels in ga staan, de door mijn code gegenereerde newline weghaal en een harde enter geef... doet hij het wel.

Iemand een idee hoe dit op te lossen?
Geqxonwoensdag 28 februari 2007 @ 09:10
En hoe roep je sText aan, met een "this.value" ?

Als workaround zou je kunnen werken met een string replace:
1
2
inhoud = new String(sText);
inhoud.replace("n","rn");
Swetseneggerwoensdag 28 februari 2007 @ 09:15
quote:
Op woensdag 28 februari 2007 09:10 schreef Geqxon het volgende:
En hoe roep je sText aan, met een "this.value" ?

Als workaround zou je kunnen werken met een string replace:
[ code verwijderd ]
nee met document.naam.value
Ja ik heb in de WriteToFile functie de volgende regel toegevoegd

1sText = sText.replace(/\n/g,"test")


zowel met \n als \r\n geprobeerd.
Maar er wordt geen newline gevonden, er staat een spatie....
Hmz, eens kijken of hij die wel vind
Swetseneggerwoensdag 28 februari 2007 @ 09:16
hij kan ik trouwens een string aanvullen met 0'en tot een bepaalde lengte?
Swetseneggerwoensdag 28 februari 2007 @ 09:22
dit werkt
1sText = sText.replace(/\s+/g,"\r\n")

wazig, maar goed.
CraZaaywoensdag 28 februari 2007 @ 09:24
Stomme vraag misschien, maar waarom gebruik je de Level 0 DOM en Level 1 DOM door elkaar? Is het niet logischer om alleen de Level 1 DOM te gebruiken, omdat die toch minimaal nodig is om je script uit te voeren?

Niet dat de Level 0 DOM niet ondersteunt wordt door alle browsers die ook 1 ondersteunen hoor, maar ik gebruik ze persoonlijk ter consistentie niet door elkaar. Of ben ik een purist?
Geqxonwoensdag 28 februari 2007 @ 09:25
quote:
Op woensdag 28 februari 2007 09:16 schreef Swetsenegger het volgende:
hij kan ik trouwens een string aanvullen met 0'en tot een bepaalde lengte?
1
2
3
4
5
6
7
8
var pad = '0';
var teststring = 'jan';
var padlength = 20;
var stringlength = teststring.length;

for (var i = 0; i <  (padlength - stringlength); i++){
   teststring += pad;
}


Zo uit mijn hoofd, moet het nog even debuggen. Helaas heeft javascript niet een soort van str_pad (string pad), in ieder geval niet voor zover ik dat kan zien.

/edit: Denkfoutje gefixt.
Swetseneggerwoensdag 28 februari 2007 @ 09:56
quote:
Op woensdag 28 februari 2007 09:25 schreef Geqxon het volgende:

[..]
[ code verwijderd ]

Zo uit mijn hoofd, moet het nog even debuggen. Helaas heeft javascript niet een soort van str_pad (string pad), in ieder geval niet voor zover ik dat kan zien.

/edit: Denkfoutje gefixt.
Ah ok, er is geen standaard functie dus
Geqxonwoensdag 28 februari 2007 @ 10:22
En dan nog ingekort vanwege mijn drang naar perfectie:

1
2
3
4
5
6
7
var pad = '0';
var teststring = 'jan';
var padlength = 20;

while (teststring.length < padlength){
   teststring += pad;
}
ralfiewoensdag 28 februari 2007 @ 10:38
1
2
3
4
5
6
7
String.prototype.pad=function( len ,char)
{
   if (char==null) char='_';
   var t=this;
   while(t.length<len) t+=char;
   return t;
};


krijgen je strings een handige pad functie erbij

1
2
3
var str="hallo";
document.write(str.pad(10,'x')); //writes halloxxxxx;
document.write(str.pad(10));     //writes hallo_____; 

Altijd makkelijk als je zoiets vaker moet gebruiken
Swetseneggerwoensdag 28 februari 2007 @ 11:50
thanks ralfie.

hier niemand op zoek naar een technische webmaster functie?
keijzwoensdag 28 februari 2007 @ 13:08
quote:
Op woensdag 28 februari 2007 10:38 schreef ralfie het volgende:

[ code verwijderd ]

krijgen je strings een handige pad functie erbij
[ code verwijderd ]

Altijd makkelijk als je zoiets vaker moet gebruiken
Dit is zeker handig zeg!
tevens tvp
SuperRembowoensdag 28 februari 2007 @ 13:56
quote:
Op woensdag 28 februari 2007 10:38 schreef ralfie het volgende:

[ code verwijderd ]

krijgen je strings een handige pad functie erbij
[ code verwijderd ]

Altijd makkelijk als je zoiets vaker moet gebruiken
Default padden met een underscore vind ik een beetje vreemd (is natuulijk makkelijk aan te passen). Als de padding langer is dan 1 teken dan klopt de lengte niet altijd. Als je veel moet padden kan ie wel eens langzaam worden.

Ik zou 'm ook padRight() noemen.
Swetseneggerwoensdag 28 februari 2007 @ 15:13
quote:
Op woensdag 28 februari 2007 13:56 schreef SuperRembo het volgende:

Als de padding langer is dan 1 teken dan klopt de lengte niet altijd.
*bekijkt code*
die snap ik niet?
ralfiewoensdag 28 februari 2007 @ 15:41
quote:
Op woensdag 28 februari 2007 15:13 schreef Swetsenegger het volgende:

[..]

*bekijkt code*
die snap ik niet?
als je padding bijv 3 tekens is, wordt de uiteindelijke string langer als wat ie had moeten zijn, bij

1
2
3
str="hallo";
str.pad(10,"hoi")
// geeft hallohoihoi, wat 11 tekens is
Swetseneggerwoensdag 28 februari 2007 @ 15:42
quote:
Op woensdag 28 februari 2007 15:41 schreef ralfie het volgende:

[..]

als je padding bijv 3 tekens is, wordt de uiteindelijke string langer als wat ie had moeten zijn, bij
[ code verwijderd ]
Ik had er nog niet eens bij nagedacht dat je padding langer zou willen maken dan 1 teken, maar ja... dan heb je inderdaad een probleem.

Ik dacht dat SuperRembo bedoelde wanneer er meer dan 1 'naloop' teken noodzakelijk is....
Geqxonwoensdag 28 februari 2007 @ 15:45
quote:
Op woensdag 28 februari 2007 15:41 schreef ralfie het volgende:

[..]

als je padding bijv 3 tekens is, wordt de uiteindelijke string langer als wat ie had moeten zijn, bij
[ code verwijderd ]
Wat op te lossen is door met de substrings van de padding te gaan werken, en te breaken als de lengte te lang is.
Swetseneggerwoensdag 28 februari 2007 @ 16:04
quote:
Op woensdag 28 februari 2007 15:45 schreef Geqxon het volgende:

[..]

Wat op te lossen is door met de substrings van de padding te gaan werken, en te breaken als de lengte te lang is.
1if (char==null || char.length>1) char='_';
SuperRembowoensdag 28 februari 2007 @ 16:08
Ok dan, mijn padding functies Ik heb de syntax ongeveer gelijk gehouden aan de functies in .NET.
De default padding is met spaties. De paddign string mag ook langer zijn dat 1 teken.

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
// Helper function for String.padLeft() and String.padRight()
String.prototype._padHelper = function(totalLength, paddingString, isRightPadding) {
   var padding = paddingString;
   if (!padding || padding.length == 0) padding = ' ';
   var s = this.toString();
   var padLength = totalLength - s.length;
   if (totalLength >= 0) {
      while (padding.length < padLength) padding += padding;
      if (isRightPadding) {
         s += padding.substr(padding.length - padLength);
      } else {
         s = padding.substr(0, padLength) + s;
      }
   }
   return s;
};

// Pads a string on the left with a specified padding string to a specified total length.
String.prototype.padLeft = function(totalLength, paddingString) {
   return this._padHelper(totalLength, paddingString, false);
};

// Pads a string on the right with a specified padding string to a specified total length.
String.prototype.padRight = function(totalLength, paddingString){
   return this._padHelper(totalLength, paddingString, true);
};


Test:
1
2
3
4
5
6
7
8
9
var out = [];
out.push('foo'.padLeft(5));
out.push('foo'.padLeft(5, 'x'));
out.push('foo'.padRight(5));
out.push('foo'.padRight(5, 'x'));
out.push('foobarbaz'.padLeft(5, 'x'));
out.push(''.padLeft(5, 'x'));
out.push(''.padLeft(5, ''));
alert('"' + out.join('"\n"') + '"');
Darkomenmaandag 5 maart 2007 @ 16:17
Ik update een textveld vanuit een select box via select box, dit gaat goed als je de opties met de muis aanklikt, maar niet als je met de pijtjes toetsen op het toetsenbord door de lijst scrolt wanneer deze is ingeklapt
Hoe kan ik dat voorkomen? zodat het veld wel word geupdate?

<select name="forum_naam" id="forum_naam" OnChange="javascript:select_email(document.getElementById('forum_naam').options[selectedIndex].value);">
Options, etc

edit brainstorm: ga nu ff onkeyup/down proberen
edit2: dat wasm

[ Bericht 11% gewijzigd door Darkomen op 05-03-2007 16:26:21 ]
CraZaaymaandag 5 maart 2007 @ 17:07
OnChange="javascript:select_email(document.getElementById('forum_naam').options[selectedIndex].value);"

kan een stuk simpeler overigens:

onchange="select_email(this.value);"
Darkomendinsdag 6 maart 2007 @ 13:02
ja daar dacht ik later pas aan
Maar toch bedankt!

Weet je misschien ook nog een javascript test voor rekening nummers? van bank en giro(postbank)?

Edit, heb iets gevonden, de proef van 11.
Eens kijken hoe dat zit maar, een werkend voorbeeld is ook goed

Oww, en dan nog postbank nr's

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
<script language="javascript">
function elf_proef(id)
{
  var bankrekeningnummer = document.getElementById(id).value;
  //Verwijder alle tekens die geen cijfers zijn
  bankrekeningnummer = bankrekeningnummer.replace(/D/g, "");
  aantal_tekens = bankrekeningnummer.length;
  var som=0;
  // loop door de 9 cijfers met de 11 proef formule
  for (i=1; i<10; i++)
  {
    getal=bankrekeningnummer.charAt(i-1);
    som+=getal*(10-i);
  }
  // geef resultaat van check terug
  if (som % 11==0 && aantal_tekens==9)
  {
    document.getElementById(id).value = bankrekeningnummer;
    return true;
  }
  else
  {
    alert('Dit is geen geldig bankrekeningnummer!');
    document.getElementById(id).value = bankrekeningnummer;
    document.getElementById(id).focus();
 }
}
</script>


[ Bericht 38% gewijzigd door Darkomen op 06-03-2007 13:14:59 ]
CraZaaydinsdag 6 maart 2007 @ 13:12
Postbank-rekeningen kun je volgens mij niet toetsen. Die worden opvolgend uitgegeven waarna per transactie aan naam/nummer check plaatsvindt afaik.

De bankrekeningnummers kun je inderdaad wel toetsen. En waar je het ook voor gebruikt: sta in je input aub punten, spaties en al dan niet leading zero's toe. Niets zo irritant als een web app die je gaat vertellen hoe je iets precies in moet vullen

edit: Voorkauwwerk http://www.2question.com/demo/elf_proef.html
Darkomendinsdag 6 maart 2007 @ 13:15
oke, dan weet ik dat, en spaties, leading zero's en punten, oke will do, kan er zelf ook niet tegen

Hey, in php heb ik wel een mooie functie, kijken if ik die om kan zetten naar javascript, zit namelijk ook postbak bij
CraZaaydinsdag 6 maart 2007 @ 14:09
Het is gewoon berekeken, dus met Math en consorten moet je een eind komen

Zou je een relevant stukje Postbank-validatie kunnen posten? Ben benieuwd hoe dat werkt.
Darkomendinsdag 6 maart 2007 @ 14:48
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
function CheckRekeningNummer(string, veld,id){
      var first = string.charAt(0);

      if( (first=="P") || (first=="p") ){
         var error = postbank(string);
      }
      else {
         var error = bankrekening(string);
      }
      return error;
   }


   function bankrekening(string) {
      deel1=string.substring(0,3)
      deel2=string.substring(4,11)
      controle_getal=eval(string.substring(12,14))
      getal=eval(deel1+deel2)

      if (getal%97==controle_getal){}//{window.alert("het rekeningnummer is juist")}
      else{
         return "Het veld Banknummer is onjuist.n";
      }
   }


   function postbank(string) {
      if (string.length<3) {
         return "Het veld Banknummer te kort voor postbanknummer.n"; 
      }
      else if(string.length>7)  {
         return "Het veld Banknummer te lang voor postbanknummer.n";
      }
   }


Dit heb ik ervan gemaakt

[ Bericht 1% gewijzigd door Darkomen op 06-03-2007 15:00:00 ]
CraZaaydinsdag 6 maart 2007 @ 16:14
Ah, ok. Niet echt validatie of het een bestaand postbanknummer is dus (tenminste: het nummer zal wel bestaan, je kunt alleen niet berekenen of er een typefout gemaakt is).

Ik zou dit soort belangrijke checks overigens ook server side doen. Met Javascript is leuk, maar voorkomt natuurlijk geen verkeerde input.
Darkomendinsdag 6 maart 2007 @ 16:32
Nee, dat is zoals je zei niet te checken
Serversided kijk ik alleen na als ik de inhoud niet vertrouw
Er kunnen maar een paar users bij dit script en het is meer een simpele controle
uppie83woensdag 7 maart 2007 @ 01:39
Ik wil dus de backgroundkleuren van divjes veranderen. In principe zijn er 3 mogelijkheden te weten:
- de achtergrond is blauw wanneer de muis niet op de div staat en de div ook niet is 'geselecteerd' (mbv een eerdere mouseup) ; tijdelijk effect
- de achtergrond is wit wanneer de muis wel op de div staat, maar de div niet is 'geselecteerd' (mbv een eerdere mouseup) ; tijdelijk effect
- de achtergrond is groen wanneer de div geselecteerd is ; blijvend effect (tot volgende selectie, maar dat moet nog ingebouwd worden)

Na wat lees en denkwerk (jaja) kwam ik op de volgende code... maar dat werkt toch niet helemaal aangezien de div na selectie toch weer blauw wordt als ik met de muis van de div af ga.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<script language="javascript">
function colorOver(div){
  if(document.getElementById(div).style.background!="green"){
   document.getElementById(div).style.background="white"
  }
}
function colorOut(div){
  if(document.getElementById(div).style.background!="green"){
   document.getElementById(div).style.background="blue"
  }   
}
function colorUp(div){
document.getElementById(div).style.background="green"
}
</script>


en een van de divjes (totaal zijn er 6, maar allen volgens de zelfde structuur)

1<div id="X" onmouseover="colorOver('X')" onmouseout="colorOut('X')" onmouseup="colorUp('X')"></div>


Bij de 2 if statements heb ik ook al geprobeerd of
1if(!(document.getElementById(div).style.background=="green"))

werkt, maar ook dat werkt niet. Het zal vast wel een simpel en stom klein dingetje zijn, maar ik zie het op dit moment even niet (zal ook wel aan de tijd liggen :P)
SuperRembowoensdag 7 maart 2007 @ 08:40
Ik denk dat het niet werkt omdat nadat je style.background='green' zet, de property style.backgroundColor = 'green' wordt gezet.

Is het niet handiger om in een stylesheet de kleuren te definieren en in javascript de classes te veranderen? (bijv. element.className = 'selected')
CraZaaywoensdag 7 maart 2007 @ 09:32
Je weet zeker dat die functies uit worden gevoerd? Het ziet er namelijk uit alsof dit zou moeten werken op het eerste gezicht.

Korter trouwens:

1
2
3
4
5
6
7
<div onmouseover="colorOver(this)" onmouseout="colorOut(this)" onmouseup="colorUp(this)"></div>

function colorOver(div){
  if (div.style.background != 'green') {
   div.style.background = "white";
  }
}


edit: Even getest, en het script doet precies wat het hoort te doen. Dat dat niet het gewenste gedrag is ligt dus niet aan het script

Je hebt namelijk de background gezet, en niet de backgroundColor. Ook al laat je de positionering e.d. leeg, ze worden toch gedeclareerd. Je had dit eenvoudig zelf kunnen testen met een alert(div.style.background). Je ziet dan dat de waarde hiervan "green none repeat scroll 0% 0%" is. En dat != green

Kortom: backgroundColor gebruiken. En nog beter idd met classNames werken zoals hierboven voorgesteld. Scheiding van gedrag en presentatie enzo.

[ Bericht 16% gewijzigd door CraZaay op 07-03-2007 10:07:11 ]
cyberstalkerwoensdag 7 maart 2007 @ 22:19
Ik heb een functietje geschreven dat automatisch naar het volgende inputveld gaat wanneer het maximum aantal karakters is ingevuld.

Nu is het probleem dat het de waarde in Fx niet wordt bijgewerkt tot nadat de functie klaar is, terwijl de waarde in Opera direct wordt geupdate.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
function auto_focus(event)
{
        var link        =       event.target;
        var inputvalue  =       link.value;
        var next_node   =       nextNode(link);

        if (inputvalue.length + 1 < link.getAttribute('maxlength'))
        {
                return false;
        }

        while (next_node.nodeName != link.nodeName && next_node != null)
        {
                next_node       =       nextNode(next_node);
        }

        if (next_node != null)
        {
                next_node.focus();
        }
}
Dit werkt zo in Firefox, omdat ik nu zelf 1 optel bij inputvalue.length. In opera kun je nu echter een karakter te weinig invullen.

Hoe kan ik dit zo maken dat het in alle browsers goed werkt? Ik gebruik overigens het event keypress:

1
2
3
4
5
6
7
for (i = 0; i < inputs.length; i++)
{
        if (inputs[i].hasAttribute('maxlength'))
        {
                inputs[i].addEventListener('keypress', auto_focus, false);
        }
}
SuperRembowoensdag 7 maart 2007 @ 22:35
Waarschijnlijk zie je bij de keypress event in FF de oude waarde (voor het verwerken van de toetsaanslag), in Opera de nieuwe waarde (na het verwerken van de toetsaanslag). Krijg je wel de nieuwe waarde bij keyup?
Darkomendonderdag 8 maart 2007 @ 10:12
Interessant scriptje!, en ik denk dat SR gelijk heeft.
ExCibularzondag 18 maart 2007 @ 17:45
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
function makeObject()
{   var x;   
if (window.ActiveXObject) {   
   x = new ActiveXObject("Microsoft.XMLHTTP");   }
else if (window.XMLHttpRequest) {
      x = new XMLHttpRequest();   
   }   
return x;
}
var request = makeObject();

//AJAX the content
var $url;
var $div;
function check_content($url,$div){   
request.open('get', $url);   
request.onreadystatechange = parseCheck_content($div);   
request.send('');}
function parseCheck_content($div){   
if(request.readyState == 1){      
   document.getElementById($div).innerHTML = 'Loading...<br/><img src="spinner.gif" alt=""/>';   
   }   
if(request.readyState == 4){      
var answer = request.responseText;      
document.getElementById($div).innerHTML = answer;   }}


Ik ben bezig met een simel ajaxscriptje. Ik heb het basisscript wekzaam gekregen allen met mijn uitbreiding doet hij het niet.

IE geeft de foutmelding: "typen komen niet overeen".
SuperRembozondag 18 maart 2007 @ 18:27
request.onreadystatechange verwacht een functie, jij kent er het resultaat van een functie aan toe (die geen waarde terrug geeft).

Lijn je code ook eens netjes uit, dit lijkt nergens op.
ExCibularzondag 18 maart 2007 @ 18:40
1request.onreadystatechange = parseCheck_content($div);

Dit roept toch een functie aan? Volgens mij mis ik ergens iets? :@
SuperRembozondag 18 maart 2007 @ 19:23
request.onreadystatechange is een functie die wordt uitgevoerd als de readystate veranderd. Het moet dus een functie zijn die uitgevoerd kan worden.
Bij jouw script wordt parseCheck_content($div) al uitgevoerd op het moment dat het aan request.onreadystatechange wordt toegekend.

1
2
3
4
5
6
7
8
9
10
11
12
13
function check_content($url, $div) {   
   request.open('get', $url);   
   request.onreadystatechange = function() {
      if (request.readyState == 1) {      
         document.getElementById($div).innerHTML = 'Loading...<br/><img src="spinner.gif" alt=""/>';   
      }   
      if (request.readyState == 4){      
         var answer = request.responseText;      
         document.getElementById($div).innerHTML = answer;   
      }
   }
   request.send('');
}


Waarom gebruik je die $-tekens? Het is toch geen php
ExCibularzondag 18 maart 2007 @ 21:21
Met die $ -tekens kan ik makkelijk zien wat variablen zijn.

Maar ik begrijp nu in ieder geval waar de fout zit! Dank je wel.
Ik zal morgen eens kijken hoe ik dit ga aanpassen.
BaggerUserdinsdag 20 maart 2007 @ 20:57
het is eigenlijk javascript icm php.. maar krijg de komma's niet goed wordt gek aaaaah (jullie kennen het gevoel vast wel)
<?php
$NAVIGATIE_rechts .= '<li><a href='#' onClick='showHint("ARTIKELEN")'>ARTIKELEN</a></li>';
?>

1
2
3
<script language='javascript'>
document.getElementById("navigatierechts").innerHTML = '<?php echo $NAVIGATIE_rechts; ?>';
</script>



het ligt aan de quotjes etc.. maar ik probeer al een uur te escapen etc maar het wel niet lukken..
ralfiedinsdag 20 maart 2007 @ 21:15
1
2
3
<?php
$NAVIGATIE_rechts 
.='<li><a href="#" onClick="showHint(\\\'ARTIKELEN\\\')">ARTIKELEN</a></li>';
?>

even uit mn kopke
BaggerUserdinsdag 20 maart 2007 @ 21:27
maar 3 \ had ik nog niet geprobeerd.. kan dat ookal

dankjewel!!!! kan ik eindelijk weer een stukje verder!
Geqxondonderdag 22 maart 2007 @ 15:51
Iemand enig idee waarom:

1
2
3
function aapnootmies(aap,noot){
document.getElementById(aap+noot).value = "Mies!";
}


wel werkt, en onderstaande code:

1
2
3
4
5
function aapnootmies(aap,noot){
for (var i = 0; i <= 2; i++){
document.getElementById(aap+i).value = noot;
}
}


Niet? Ik raak hier een beetje gefrustreerd :P
super-muffindonderdag 22 maart 2007 @ 16:07
is er wel een element met het id aap0?

Geqxondonderdag 22 maart 2007 @ 16:20
Jep. Ik heb het nu compleet opnieuw geschreven, waarna het opeens wel werkte. Zeer vreemd, want mijn blote oog kon geen verschil ontdekken

Ik dacht eigenlijk meer dat het kwam door de manier waarop ik de variabele I opvroeg.
super-muffindonderdag 22 maart 2007 @ 16:25
Zeer zeker erg vreemd, omdat ik em heb gekopieerd van jou en hij werkt wel.
http://www.danielpunt.nl/geqxie.htm
Geqxondonderdag 22 maart 2007 @ 16:39
1
2
3
for (var counter=start; counter<=end; counter++){
   document.getElementById(field+counter).value = document.getElementById(field+id).value;
}

1
2
3
4
   
for (var i=start; i<=end; i++){
   document.getElementById(field+i).value = document.getElementById(field+id).value;
}


In mijn geval werkte het tweede stukje code flawless :)
veldmuisvrijdag 23 maart 2007 @ 17:44
Ik vraag me iets af, mijn kennis van JS is 0:
Ik heb een stukje HTML waarin ik meerdere foto's in dezelfde pagina om de beurt wil weergeven. Kan ik dan in JS iets van een array maken met de bestandsnamen en dat ik dan op 'volgende' kan klikken dat de volgende foto geladen wordt, of eventueel heel het HTML bestand opnieuw inclusief de volgende foto?
SuperRembovrijdag 23 maart 2007 @ 17:50
Ja dat kan. Gewoon de src van het plaatje veranderen met javascript.
CraZaayvrijdag 23 maart 2007 @ 17:51
quote:
Op vrijdag 23 maart 2007 17:44 schreef veldmuis het volgende:
Ik heb een stukje HTML waarin ik meerdere foto's in dezelfde pagina om de beurt wil weergeven. Kan ik dan in JS iets van een array maken met de bestandsnamen en dat ik dan op 'volgende' kan klikken dat de volgende foto geladen wordt, of eventueel heel het HTML bestand opnieuw inclusief de volgende foto?
Da's geen enkel probleem

Je kan met javascript de source van een afbeelding (de "src" in <img src="...">) dynamisch wijzigen via "element.src = 'plaatje.jpg';".
veldmuisvrijdag 23 maart 2007 @ 17:52
Okay, dan weet ik dat het nuttig is om verder te zoeken
Heb je nog een hint waar ik naar moet zoeken?
veldmuisvrijdag 23 maart 2007 @ 17:52
Ah, dankje, CraZaay!
Geqxonvrijdag 23 maart 2007 @ 18:15
http://www.buyshit.nl/keygen/

Hier staat alles dat je nodig hebt
veldmuisvrijdag 23 maart 2007 @ 18:55
Cool!
Kan je hiermee ook nog verder gaan zodat je een stuk tekst op de pagina kan veranderen, en ook plaatjes. Hmm, hoe leg je dat uit

Tekst 1 met plaatje 1, 2, 3
Tekst 2 met plaatje 4, 5, 6

dat idee?
Geqxonvrijdag 23 maart 2007 @ 19:03
1
2
3
4
5
<p id="tekstveld">Doei!</p>

<script>
document.getElementById('tekstveld').innerHTML = "Hoi!";
</script>


innerHTML is het magische woord :)
CraZaayzaterdag 24 maart 2007 @ 14:04
Of DOM scripting, maar da's voor nu misschien te hoog gegrepen

En als je verschillende teksten hebt met per tekst verschillende plaatjes zou ik ze in een multidimensionale array zetten.
veldmuiszaterdag 24 maart 2007 @ 14:07
Pff, heb even wat rond zitten zoeken, en denk dat ik toch maar op zoek ga naar een hoster die ook php/sql heeft.
CraZaayzaterdag 24 maart 2007 @ 23:00
Want dan denk je een betere user experience te bieden door de pagina steeds te herladen?
Litphozaterdag 24 maart 2007 @ 23:01
quote:
Op zaterdag 24 maart 2007 23:00 schreef CraZaay het volgende:
Want dan denk je een betere user experience te bieden door de pagina steeds te herladen?
PHP-gegenereerd AJAX met SQL backend natuurlijk .
veldmuiszaterdag 24 maart 2007 @ 23:21
quote:
Op zaterdag 24 maart 2007 23:00 schreef CraZaay het volgende:
Want dan denk je een betere user experience te bieden door de pagina steeds te herladen?
Nee, dan denk ik in een kortere tijd een beter werkende pagina te maken. Javascript biedt zeker voordelen, maar het is (met mijn kennis) erg lastig als het snel af moet. Als ik tijd heb ga ik er wel eens naar kijken, voorlopig even niet. Jullie zien me nog terug hier!
CraZaaymaandag 26 maart 2007 @ 13:28
quote:
Op zaterdag 24 maart 2007 23:01 schreef Litpho het volgende:

[..]

PHP-gegenereerd AJAX met SQL backend natuurlijk .
Ik gebruik nog zelden PHP, maar zit dat er voortaan native in ja?
Litphomaandag 26 maart 2007 @ 13:31
quote:
Op maandag 26 maart 2007 13:28 schreef CraZaay het volgende:

[..]

Ik gebruik nog zelden PHP, maar zit dat er voortaan native in ja?
Geen idee. Ik gebruik absoluut géén PHP, maar je hebt uiteraard niet noodzakelijk een framework nodig om AJAX te implementeren, je loopt alleen zonder het risico dat het na verloop van tijd enigszins onoverzichtelijk wordt.
Geqxonwoensdag 28 maart 2007 @ 02:53
Op het moment verander ik plaatjes dynamisch met image.src = "bla.jpg". Gaat prima, maar ik wil het plaatje dan maximaal 100 breed hebben. image.width = 100 werkt prima, hij scaled het mooi mee, maar bij het volgende plaatje kloppen de verhoudingen niet meer.

Iemand misschien pointers voor mijn probleem? Thx

[ Bericht 63% gewijzigd door Geqxon op 28-03-2007 03:55:42 ]
SuperRembowoensdag 28 maart 2007 @ 09:41
In Firefox heb je de naturalWidth en naturalHeight properties waarmee je de goede hoogte kan berekenen. In IE kan je even een nieuwe img maken en daar de width en height van opvragen om de echte afmetingen te achterhalen.

Zie de scaleImage functie van FOK:)
Geqxonwoensdag 28 maart 2007 @ 10:02
quote:
Op woensdag 28 maart 2007 09:41 schreef SuperRembo het volgende:
In Firefox heb je de naturalWidth en naturalHeight properties waarmee je de goede hoogte kan berekenen. In IE kan je even een nieuwe img maken en daar de width en height van opvragen om de echte afmetingen te achterhalen.

Zie de scaleImage functie van FOK:)
Een copy/paste van mijn huidige situatie:

1
2
3
image.style.display = "none";
image.src = null;
image.src = "http://www.server.com/"+directory+"/"+imageurl+".jpg";


En op de onload van dit plaatje:

1
2
3
thumb.style.display = "inline";         
thumb.width = thumb.width / (thumb.height/100);;
thumb.height = 100;


Het nadeel is dat hij ondanks mijn src = null nog steeds de afmetingen van het vorige plaatje onthoudt, waardoor de hoogte/breedte verhouding niet meer klopt. Ik duik even de fok resizer in
Geqxonwoensdag 28 maart 2007 @ 15:30
Wat ik inmiddels opgelost heb door de complete inhoud van mijn div aan te passen via innerHTML. Grove manier, maar het werkt vele malen beter zo.
BaggerUserzaterdag 31 maart 2007 @ 20:54
halo heb een raar probleempje :)

ik heb een stukje html:
1select name='product' id='eenheid'></select>


een javascript funtie:
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
function updatepulldownEenheid(str)

if (str.length > 0)

var url="ajax/updatepulldownEenheid.php?sid=" + Math.random() + "&id=" + str
xmlHttp=GetXmlHttpObject(pulldownEenheidChanged)
xmlHttp.open("GET", url , true)
xmlHttp.send(null)

else






function pulldownEenheidChanged() 

 if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
 { 
//  document.getElementById("txtHint").innerHTML=xmlHttp.responseText; 
   hulp = xmlHttp.responseText; 
   hulp = hulp.substring(0,1);
   //alert(hulp);
   if (hulp == '#')
   {
      //alert(hulp);

      document.getElementById("eenheid").innerHTML = ' ';
   }
   else
   {
      document.getElementById("eenheid").innerHTML = xmlHttp.responseText;
      

   }
 } 


dit is wat updatepulldownEenheid.php terug geeft:
1       $html .= "<option value="1">Big/Mac;


in firefox werkt het maar in ie laat hij "eenheid" leeg

iemand enig idee wat hier de oorzaak van is ?
SuperRembozaterdag 31 maart 2007 @ 21:02
Wat zou er precies moeten gebeuren?

Ik zou iig door php een JSON object/array terug geven en daarmee in javascript de benodigde options in de select toevoegen.
Darkomenzaterdag 31 maart 2007 @ 21:31
Precies zoals superrembo het zegt!
Stukje om een selectfield te vullen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 var selectfield = document.getElementById(select); 


  // clear down the dropdown before adding new entries into it.
    selectfield.options.length = 1;
    j=0;
   for (var i=0; i < data.length; i++)
   {
      if (data[i] == 'RETURN')
      {
      return true;
      }
      selectfield.options[j] = new Option(data[i], data[i]);
     j++;
   }
qu63zaterdag 31 maart 2007 @ 23:24
Stukje HTML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<form action="javascript:get(document.getElementById('myform'),1);" name="myform1" id="myform1">
<textarea id="mytextarea11">my test
1
2
3
</textarea>
<textarea id="mytextarea12">my test2
4
5
6</textarea>
<br>
<input type="button" name="button" value="Submit" 
   onclick="javascript:get(this.parentNode,1);">
</form>
<br><br>
Server-Response:<br>
<hr>
<span name="myspan1" id="myspan1">hoi?</span>


Werkende JavaScript:
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
   var http_request = false;
   function makePOSTRequest(url, parameters, nr) {
      http_request = false;
      if (window.XMLHttpRequest) { // Mozilla, Safari,...
         http_request = new XMLHttpRequest();
         if (http_request.overrideMimeType) {
            // set type accordingly to anticipated content type
            //http_request.overrideMimeType('text/xml');
            http_request.overrideMimeType('text/html');
         }
      } else if (window.ActiveXObject) { // IE
         try {
            http_request = new ActiveXObject("Msxml2.XMLHTTP");
         } catch (e) {
            try {
               http_request = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (e) {}
         }
      }
      if (!http_request) {
         alert('Cannot create XMLHTTP instance');
         return false;
      }
      
      http_request.onreadystatechange = alertContents;
      http_request.open('POST', url, true);
      http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
      http_request.setRequestHeader("Content-length", parameters.length);
      http_request.setRequestHeader("Connection", "close");
      http_request.send(parameters);
   }

   function alertContents() {
      if (http_request.readyState == 4) {
         if (http_request.status == 200) {
            //alert(http_request.responseText);
            result = http_request.responseText;
            document.getElementById("myspan1").innerHTML = result + "<input type="button" name="close" value="sluiten" onClick="sluit(1)">";  
//         alert("myspan"+nr+"");
         } else {
            alert('There was a problem with the request.');
         }
      }
     if (http_request.readyState == 1) {
        document.getElementById("myspan1").innerHTML = "<img src='img.gif'>"
     }
     if (http_request.readyState == 2) {
        document.getElementById("myspan1").innerHTML = "<img src='img.gif'>"
     }
     if (http_request.readyState == 3) {
        document.getElementById("myspan1").innerHTML = "<img src='img.gif'>"
     }
   }
   
   function get(obj, nr) {
      var poststr = "mytextarea"+nr+"1=" + encodeURI( document.getElementById("mytextarea"+nr+"1").value ) +
                    "&mytextarea"+nr+"2=" + encodeURI( document.getElementById("mytextarea"+nr+"2").value );
      makePOSTRequest('update2.php', poststr, nr);
   }
  
  function sluit(nr) {
     document.getElementById("myspan"+nr).innerHTML = "";
   }



Niet werkende JavaScript:
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
var http_request = false;
   function makePOSTRequest(url, parameters, nr) {
      http_request = false;
      if (window.XMLHttpRequest) { // Mozilla, Safari,...
         http_request = new XMLHttpRequest();
         if (http_request.overrideMimeType) {
            // set type accordingly to anticipated content type
            //http_request.overrideMimeType('text/xml');
            http_request.overrideMimeType('text/html');
         }
      } else if (window.ActiveXObject) { // IE
         try {
            http_request = new ActiveXObject("Msxml2.XMLHTTP");
         } catch (e) {
            try {
               http_request = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (e) {}
         }
      }
      if (!http_request) {
         alert('Cannot create XMLHTTP instance');
         return false;
      }
      
      http_request.onreadystatechange = alertContents(nr);
      http_request.open('POST', url, true);
      http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
      http_request.setRequestHeader("Content-length", parameters.length);
      http_request.setRequestHeader("Connection", "close");
      http_request.send(parameters);
   }

   function alertContents(nr) {
      if (http_request.readyState == 4) {
         if (http_request.status == 200) {
            //alert(http_request.responseText);
            result = http_request.responseText;
            document.getElementById("myspan"+nr+"").innerHTML = result + "<input type="button" name="close" value="sluiten" onClick="sluit("+nr+")">";  
//         alert("myspan"+nr+"");
         } else {
            alert('There was a problem with the request.');
         }
      }
     if (http_request.readyState == 1) {
        document.getElementById("myspan"+nr+"").innerHTML = "<img src='img.gif'>"
     }
     if (http_request.readyState == 2) {
        document.getElementById("myspan"+nr+"").innerHTML = "<img src='img.gif'>"
     }
     if (http_request.readyState == 3) {
        document.getElementById("myspan"+nr+"").innerHTML = "<img src='img.gif'>"
     }
   }
   
   function get(obj, nr) {
      var poststr = "mytextarea"+nr+"1=" + encodeURI( document.getElementById("mytextarea"+nr+"1").value ) +
                    "&mytextarea"+nr+"2=" + encodeURI( document.getElementById("mytextarea"+nr+"2").value );
      makePOSTRequest('update2.php', poststr, nr);
   }
  
  function sluit(nr) {
     document.getElementById("myspan"+nr).innerHTML = "";
   }


enige wijzigingen zitten in de regeles 24, 33, 38, 45 ,47 en 51..

iemand tips? :)
SuperRembozondag 1 april 2007 @ 10:41
onreadystatechange moet een functie zijn die uitgevoer kan worden als de readystate van de request veranderd. In de oude versie is het inderdaad een functie, in de nieuwe versie wordt de functie alertContents meteen uitgevoerd en het resultaat (null/undefinded) wordt aan onreadystatechange toegekend.

Extra parameters doorgeven kan met behulp van een closure:
1
2
3
http_request.onreadystatechange = function() {
   alertContents(nr);
}



Als je toch alle gegevens via javascript wil ophalen en de form submit niet gebruikt, dan kan je beter de hele form tag weg laten.
In een onclick attribuut hoort javascript te staan, dus "javascript:" is daar overbodig.
Ik zou de sluit-knop gewoon in je html zetten. Standaard is ie verborgen, alleen als je 'm nodig hebt maak je 'm zichtbaar. Dat werkt een stuk makkelijker dan in javascript een hele button in innerHTML zetten. Hetzelfde geldt voor het 'busy' plaatje.
qu63zondag 1 april 2007 @ 15:13
quote:
Op zondag 1 april 2007 10:41 schreef SuperRembo het volgende:
onreadystatechange moet een functie zijn die uitgevoer kan worden als de readystate van de request veranderd. In de oude versie is het inderdaad een functie, in de nieuwe versie wordt de functie alertContents meteen uitgevoerd en het resultaat (null/undefinded) wordt aan onreadystatechange toegekend.

Extra parameters doorgeven kan met behulp van een closure:

[ code verwijderd ]
check! :)
quote:
Als je toch alle gegevens via javascript wil ophalen en de form submit niet gebruikt, dan kan je beter de hele form tag weg laten.
hoe bedoel je dat? Het is de bedoeling dat er meerdere 'forms' komen (zoals dit dus-->)
HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<form action="javascript:get(document.getElementById('myform'),1);" name="myform1" id="myform1">
<input id="mytextarea11" value="my test">
<input id="mytextarea12" value="my test">
<input type="button" name="button" value="Submit" 
   onclick="javascript:get(this.parentNode,1);">
</form>
<div id="myspan1"></div>
meteen wat tekst?
<form action="javascript:get(document.getElementById('myform'),2);" name="myform2" id="myform2">
<input id="mytextarea21" value="my test">
<input id="mytextarea22" value="my test">
<input type="button" name="button" value="Submit" 
   onclick="javascript:get(this.parentNode,2);">
</form>
<div id="myspan2"></div>
meteen wat tekst?
quote:
In een onclick attribuut hoort javascript te staan, dus "javascript:" is daar overbodig.
Ik zou de sluit-knop gewoon in je html zetten. Standaard is ie verborgen, alleen als je 'm nodig hebt maak je 'm zichtbaar. Dat werkt een stuk makkelijker dan in javascript een hele button in innerHTML zetten. Hetzelfde geldt voor het 'busy' plaatje.
je bedoelt dmv style="display:none"?
SuperRembozondag 1 april 2007 @ 15:59
quote:
Op zondag 1 april 2007 15:13 schreef qu63 het volgende:
hoe bedoel je dat? Het is de bedoeling dat er meerdere 'forms' komen (zoals dit dus-->)
HTML
De action van het form doet hetzelfde als de onclick van de submit button. Ik vraag me af of die action überhaupt uitgevoerd wordt.
quote:
je bedoelt dmv style="display:none"?
Ja.
qu63zondag 1 april 2007 @ 16:25
quote:
Op zondag 1 april 2007 15:59 schreef SuperRembo het volgende:

[..]

De action van het form doet hetzelfde als de onclick van de submit button. Ik vraag me af of die action überhaupt uitgevoerd wordt.
wordt idd niet uitgevoerd..
cyberstalkerzondag 1 april 2007 @ 19:13
quote:
Op zondag 1 april 2007 16:25 schreef qu63 het volgende:

[..]

wordt idd niet uitgevoerd..
Maar is wel nodig voor de validatie van je document. Als dat je uberhaupt iets uitmaakt.
SlimShadydinsdag 3 april 2007 @ 15:52
stel voor je hebt tables met bepaalde eigenschappen nodig. en je verzamelt ze in een array.
dan wordt de verwijzing naar het element opgeslagen toch?

wat ik wil doen is het volgende:
- het origineel kopiëren en bewaren in de array, dmv cloneNode (om later terug te zetten)
- de eigenschappen van het origineel wijzigen (dmv de verwijzing? ook in de array)

en nu:
als je het origineel wijzigt en later terugzet/vervangt dmv replaceChild, klopt de verwijzing niet meer.
hier raak ik het een beetje kwijt en lukt het niet. geeft replaceChild een nieuwe verwijzing terug?

zijn er voorbeelden van backup, change en restore in JavaScript?
CraZaaydinsdag 3 april 2007 @ 16:37
Ook al heb ik nooit zoiets gedaan, het lijkt me dat replaceChild inderdaad een nieuwe verwijzing geeft. Je verwijderd namelijk een element en zet op die plaats een nieuw element neer. De verwijzing die je hebt heeft dan dus nog betrekking op het verwijderde element, dus daar heb je niets meer aan.

Of begrijp ik je verkeerd? Post anders wat relevante code.
SlimShadydinsdag 3 april 2007 @ 16:47
klopt wel wat je zegt. en zo had ik het ook gedaan.
maar het gaat nog steeds fout: de zogenaamd nieuwe verwijzing klopt niet.
dus bekijk ik nu de specificaties. en zie hier wat raars:
Replaces the child node oldChild with newChild in the list of children, and returns the oldChild node.
bron: www.w3.org
daar heb ik wat aan .

ik ga nog maar 'ns brainstormen...
SlimShadydinsdag 3 april 2007 @ 17:19
dat werkte dus niet. nu heb ik het vervangen door insertbefore, removechild en nextsibling.
en nu werkt het wel. opgelost.
SHERMANdinsdag 10 april 2007 @ 13:14
Ik heb een monitorings programma met als output een website.

Ik wil deze website standaard open hebben op een computer zodat de status altijd te zien is. Echter, voor deze pagina moet worden ingelogd, en ik wil het vol automatisch is. Ook zou ik graag twee verschillende pagina's om en om op vragen.

Mijn vraag; hoe kan dit? Ik zat te denken om het systeem in een i-frame te knallen en via JS steeds de pagina's af te wisselen, kan dit?

SlimShadydinsdag 10 april 2007 @ 14:05
cross-site scripting is gevaarlijk en in FF sterk beveiligd.
ik weet niet hoe dat in IE is. als je FF gebruikt kan je een extensie maken, heb je alle controle.
SHERMANdinsdag 10 april 2007 @ 14:19
Het gaat waarschijnlijk IE worden, maar het is dus niet zo simpel als dat dat ik dacht?
Geqxondinsdag 10 april 2007 @ 14:36
Op wat voor manier moet er ingelogd worden? Een username / password veld op een pagina oid?
SHERMANdinsdag 10 april 2007 @ 14:46
quote:
Op dinsdag 10 april 2007 14:36 schreef Geqxon het volgende:
Op wat voor manier moet er ingelogd worden? Een username / password veld op een pagina oid?
Jup. Ik zat te denken om zelf handmatig in te loggen, en dan die JS te laten runnen, door het steeds opvragen van de pagina's zouden er ook geen session time-outs moeten komen volgens mij..
cyberstalkerdinsdag 10 april 2007 @ 15:39
Waarom zou je het met een iframe willen doen? Kun je niet gewoon in die pagina om de zoveel minuten een (AJAX) requestje doen en daarmee het geheel updaten? Lijkt me veel netter.

Anders kun je altijd nog het document zelf verversen.
SHERMANdinsdag 10 april 2007 @ 16:12
Omdat ik slechts een beperkte HTML/javascript kennis heb en mij dit het makkelijkste leek..
Geqxonwoensdag 11 april 2007 @ 15:36
Een zeer kort vraagje:

1imageobject.style.display = "inline";   


Werkt onder Safari en Firefox prima, onder IE niet. Het plaatje is gegenereerd als:

1<img src="" onload="functie(this)" style="display: none">


Hoe ga ik dit onder Internet Explorer werkend krijgen?
Geqxonwoensdag 11 april 2007 @ 15:55
Gevonden. Het is mijn image-resizer, die bij een display = "none" onder IE bij de waarde imageobject.width doodleuk 0 aangeeft.
George.W.Bushvrijdag 20 april 2007 @ 11:20
Ik heb een javascript functie welke een andere functie aanroept.
functie 2 haalt via AJAX een aantal waarden op en zou die moeten returnen naar functie 1.
functie 1 moet vervolgens die values in een innerHMTL zetten:

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
<?php
// functie 1
function getpageBody(name) {
    
http.open("GET"urlpageBody escape(name), true);
    
http.onreadystatechange = function() {
    if (
http.readyState == 4) {
    
results http.responseText;
        if(
results!=''){
             
document.getElementById('PageVersion').innerHTML=getVersions(name); // dit gaat dus blijkbaar fout
        
}else{
             
document.getElementById('PageVersion').innerHTML=' ';
        }
    }
}
    
http.send(null);
 }

//functie 2
function getVersions(page) {
    
http.open("GET"urlgetVersions escape(page), true);
    
http.onreadystatechange = function() {
    if (
http.readyState == 4) {
    
results http.responseText;
        if(
results!=''){
             return 
http.responseText;
        }else{
             return(
'leeg');
        }
    }
}
    
http.send(null);
 }
?>

Zodra ik deze functies aanroep/ activeer, geeft mijn element PageVersions 'undefined' te zien.
Als ik in functie 2 de return verander in een document.write laat deze wel degelijk de te verwachten output zien. Maar deze output komt op de een of andere manier niet correct in functie 1 terecht.

Wat doe ik fout?
cyberstalkervrijdag 20 april 2007 @ 11:27
quote:
Op vrijdag 20 april 2007 11:20 schreef George.W.Bush het volgende:
Ik heb een javascript functie welke een andere functie aanroept.
functie 2 haalt via AJAX een aantal waarden op en zou die moeten returnen naar functie 1.
functie 1 moet vervolgens die values in een innerHMTL zetten:


[ code verwijderd ]
Zodra ik deze functies aanroep/ activeer, geeft mijn element PageVersions 'undefined' te zien.
Als ik in functie 2 de return verander in een document.write laat deze wel degelijk de te verwachten output zien. Maar deze output komt op de een of andere manier niet correct in functie 1 terecht.

Wat doe ik fout?
Volgens mij begrijp jij het concept van AJAX niet helemaal. De eerste A staat namelijk voor asynchronous. Dit houdt in dat je functie niet gaat zitten wachten op input van de webserver. De hele onreadystate functie wordt pas aangeroepen op het moment dat de webserver iets terugstuurt. Je functie retourneert dus inderdaad nooit iets.

Je zult dus vanuit die functie zelf wat dingen moeten veranderen.
George.W.Bushvrijdag 20 april 2007 @ 11:36
quote:
Op vrijdag 20 april 2007 11:27 schreef cyberstalker het volgende:

[..]

Volgens mij begrijp jij het concept van AJAX niet helemaal. De eerste A staat namelijk voor asynchronous. Dit houdt in dat je functie niet gaat zitten wachten op input van de webserver. De hele onreadystate functie wordt pas aangeroepen op het moment dat de webserver iets terugstuurt. Je functie retourneert dus inderdaad nooit iets.

Je zult dus vanuit die functie zelf wat dingen moeten veranderen.
eh nee, die functie retourneert wel degelijk wat. De volgende regel:

1http.open("GET", urlgetVersions + escape(page), true);


is wat helderder als je deze erbij hebt
1var urlgetVersions = "../system/versions.php?page="


Nogmaals, als ik in functie 2 document.write(http.responseText); schrijf ipv return http.responseText; krijg ik gewoon keurig datgene van de webserver te zien wat ik nodig heb en http.responseText heeft dus value, namelijk het resultaat van een query:

1
2
3
4
5
6
7
Versie: 
<select onChange="getpageVersion(this.options[this.selectedIndex].value)">
   <option selected="selected">Huidige versie</option>
   <option value="6">-1</option>
   <option value="2">-2</option>
   <option value="1">-3</option>
</select>


[ Bericht 6% gewijzigd door George.W.Bush op 20-04-2007 11:45:09 ]
cyberstalkervrijdag 20 april 2007 @ 11:44
quote:
Op vrijdag 20 april 2007 11:36 schreef George.W.Bush het volgende:

[..]

eh nee, die functie retourneert wel degelijk wat. De volgende regel:


[ code verwijderd ]

is wat helderder als je deze erbij hebt

[ code verwijderd ]

Nogmaals, als ik in functie 2 document.write('http.responseText'); schrijf ipv return http.responseText; krijg ik gewoon keurig datgene van de webserver te zien wat ik nodig heb.
Je snapt het nog steeds niet. Het stuk vanaf de http.onreadystatechange = function() { tot en met de bijbehorende } wordt niet uitgevoerd totdat er een resultaat is. Dit is dus wat er direct wordt uitgevoerd:

1
2
3
4
5
function getVersions(page) 
{
        http.open("GET", urlgetVersions + escape(page), true);
        http.send(null);
}


En natuurlijk werkt een document.write daar. Die wordt dan uitgevoerd op het moment dat er een resultaat is. Op dat moment is jouw functie getVersions al gestopt zonder een returnvalue.
George.W.Bushvrijdag 20 april 2007 @ 11:48
quote:
Op vrijdag 20 april 2007 11:44 schreef cyberstalker het volgende:

[..]

Je snapt het nog steeds niet. Het stuk vanaf de http.onreadystatechange = function() { tot en met de bijbehorende } wordt niet uitgevoerd totdat er een resultaat is. Dit is dus wat er direct wordt uitgevoerd:
[ code verwijderd ]

En natuurlijk werkt een document.write daar. Die wordt dan uitgevoerd op het moment dat er een resultaat is. Op dat moment is jouw functie getVersions al gestopt zonder een returnvalue.
Die document.write wordt toch op hetzelfde moment uitgevoerd als die return. Die return vind pas plaats bij de onreadstate
cyberstalkervrijdag 20 april 2007 @ 11:51
quote:
Op vrijdag 20 april 2007 11:48 schreef George.W.Bush het volgende:

[..]

Die document.write wordt toch op hetzelfde moment uitgevoerd als die return. Die return vind pas plaats bij de onreadstate
Klopt inderdaad. Verschil is alleen dat op het moment van die onreadystatechange de functie getVersions allang gestopt is. Die gaat daar niet op zitten wachten. Dat is het hele idee van dat asynchronous. Jij denkt in lineaire code en daar ga je de mist in.
George.W.Bushvrijdag 20 april 2007 @ 11:55
quote:
Op vrijdag 20 april 2007 11:51 schreef cyberstalker het volgende:

[..]

Klopt inderdaad. Verschil is alleen dat op het moment van die onreadystatechange de functie getVersions allang gestopt is. Die gaat daar niet op zitten wachten. Dat is het hele idee van dat asynchronous. Jij denkt in lineaire code en daar ga je de mist in.
Je bedoelt dat functie een al gestopt is?
Je zegt nu functie 2.
Maar functie 2 returned wel, maar dan is functie 1 al klaar bedoel je?

1document.getElementById('PageVersion').innerHTML=getVersions(name);

die PageVersion element blijft leeg, want op het moment van aanroepen is getVerions(name) nog leeg....
Dat bedoel je?
Als ik dan in functie 1 een var maak die gevuld wordt met getVersions en die var in de innerHTML zet zou het wel moeten werken toch?

[ Bericht 15% gewijzigd door George.W.Bush op 20-04-2007 12:01:00 ]
George.W.Bushvrijdag 20 april 2007 @ 12:44
fuck, ook met een timertje ingebouwd werkt het niet.

1
2
var version=getVersions(name);
setTimeout("document.getElementById('PageVersion').innerHTML="+version+"",1000);


iemand nog een idee hoe ik functie 1 kan laten wachten op de results van functie 2?

[ Bericht 45% gewijzigd door George.W.Bush op 20-04-2007 12:51:34 ]
George.W.Bushvrijdag 20 april 2007 @ 13:27
Opgelost, functie 2 in functie 1 geintegreerd
cyberstalkervrijdag 20 april 2007 @ 13:29
quote:
Op vrijdag 20 april 2007 12:44 schreef George.W.Bush het volgende:
fuck, ook met een timertje ingebouwd werkt het niet.


[ code verwijderd ]

iemand nog een idee hoe ik functie 1 kan laten wachten op de results van functie 2?
Je begrijpt het zo te zien nog steeds niet. Omdat ik niet het idee heb dat ik het je zo uit kan leggen dat je het zelf begrijpt heb ik hier een voorbeeldje dat zou moeten werken (niet getest):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
function getpageBody(name)
{
   http.open("GET", urlpageBody + escape(name), true);
   http.onreadystatechange = function()
   {
      if (http.readyState == 4)
      {
         results = http.responseText;
         if(results!='')
         {
            document.getElementById('PageVersion').innerHTML=results;
         }
         else
         {
            document.getElementById('PageVersion').innerHTML=' ';
         }
      }
   }
   http.send(null);
}


Sowieso is het vreemd dat je in zowel functie 1 als functie 2 een http request doet.
George.W.Bushvrijdag 20 april 2007 @ 14:07
quote:
Op vrijdag 20 april 2007 13:29 schreef cyberstalker het volgende:

[..]

Je begrijpt het zo te zien nog steeds niet. Omdat ik niet het idee heb dat ik het je zo uit kan leggen dat je het zelf begrijpt heb ik hier een voorbeeldje dat zou moeten werken (niet getest):
[ code verwijderd ]
Zie de post boven je, ik heb iets soortgelijks gedaan. Ik begreep je wel, maar wist even niet hoe het op te lossen. Door inderdaad beide functie's in 1 functie te integreren is het probleem opgelost.
quote:
Sowieso is het vreemd dat je in zowel functie 1 als functie 2 een http request doet.
Dat valt wel mee volgens mij. http request 1 trekt de inhoud van een gekozen pagina uit de pagina tabel en plaatst die in mijn fckeditor (getPageBody). In deze funtie heb ik nu getVersions geintegreerd die via een xmlhttprequest een andere query uitvoert die uit de versie tabel het aantal versies van de gekozen pagina haalt en deze toont.

Nu kan ik van de gekozen pagina een eerdere versie kiezen, waarbij, wederom met een xmlhttprequest de body van deze oudere versie uit de versie tabel wordt gehaald en in de fckeditor wordt geplaatst (getpageVersion).

Nu kan ik dus in een cms omgeving pagina's opvragen en vervolgens versies van die pagina's opvragen zonder refresh. Vooral omdat het anders een 3 traps serverside raket zou worden vond ik dit eenvoudiger
SuperRembovrijdag 20 april 2007 @ 17:12
quote:
Op vrijdag 20 april 2007 14:07 schreef George.W.Bush het volgende:
Dat valt wel mee volgens mij. http request 1 trekt de inhoud van een gekozen pagina uit de pagina tabel en plaatst die in mijn fckeditor (getPageBody). In deze funtie heb ik nu getVersions geintegreerd die via een xmlhttprequest een andere query uitvoert die uit de versie tabel het aantal versies van de gekozen pagina haalt en deze toont.
Maar waarom haal je niet in 1 request de pagina EN de bijbehorende versieinformatie tegelijk op?
George.W.Bushvrijdag 20 april 2007 @ 17:55
quote:
Op vrijdag 20 april 2007 17:12 schreef SuperRembo het volgende:

[..]

Maar waarom haal je niet in 1 request de pagina EN de bijbehorende versieinformatie tegelijk op?
Ik bedacht me later dat dat zou kunnen, maar ik zie niet zo zeer de toegevoegde waarde van een join in mijn query tov 2 xmlhttprequest om de code aan te passen, of zie ik wat over het hoofd?
SuperRembovrijdag 20 april 2007 @ 19:26
Ik zeg niet dat je een join in je query moet stoppen, ik zeg alleen dat je waarschijnlijk beter die resultaten in 1 httprequest kunt versturen. Dat is sneller, belast de server minder en is makkelijker in javascript.
George.W.Bushzondag 22 april 2007 @ 20:17
quote:
Op vrijdag 20 april 2007 19:26 schreef SuperRembo het volgende:
Ik zeg niet dat je een join in je query moet stoppen, ik zeg alleen dat je waarschijnlijk beter die resultaten in 1 httprequest kunt versturen. Dat is sneller, belast de server minder en is makkelijker in javascript.
Dat bedoelde ik dus. Is 1 'moeilijkere' query sneller dan twee html requests met 2 maal een simpele select?

Die javascript heb ik nu al, hoewel dit voor toekomstige aanpassingen inderdaad vragen om problemen is
CraZaayzondag 22 april 2007 @ 20:24
quote:
Op zondag 22 april 2007 20:17 schreef George.W.Bush het volgende:

[..]

Dat bedoelde ik dus. Is 1 'moeilijkere' query sneller dan twee html requests met 2 maal een simpele select?

Die javascript heb ik nu al, hoewel dit voor toekomstige aanpassingen inderdaad vragen om problemen is
Het is natuurlijk niet zo dat er een 1-op-1 relatie is in het aantal requests en het aantal queries: je kunt met 1 httprequest prima zorgen dat je server side 2 queries uitvoert.
George.W.Bushzondag 22 april 2007 @ 20:46
quote:
Op zondag 22 april 2007 20:24 schreef CraZaay het volgende:

[..]

Het is natuurlijk niet zo dat er een 1-op-1 relatie is in het aantal requests en het aantal queries: je kunt met 1 httprequest prima zorgen dat je server side 2 queries uitvoert.
Uiteraard de serverside kant kan natuurlijk van alles uitvoeren, het ging me nu om deze specifieke situatie.
CraZaayzondag 22 april 2007 @ 23:31
quote:
Op zondag 22 april 2007 20:46 schreef George.W.Bush het volgende:

[..]

Uiteraard de serverside kant kan natuurlijk van alles uitvoeren, het ging me nu om deze specifieke situatie.
Waarom kun je in deze specifieke situatie dan niet met 1 httprequest zowel de inhoud van de pagina als de beschikbare versies ophalen? Of zie ik iets over het hoofd?
George.W.Bushzondag 22 april 2007 @ 23:55
quote:
Op zondag 22 april 2007 23:31 schreef CraZaay het volgende:

[..]

Waarom kun je in deze specifieke situatie dan niet met 1 httprequest zowel de inhoud van de pagina als de beschikbare versies ophalen? Of zie ik iets over het hoofd?
Dat kan ook Ik stel alleen een tegenvraag... maak het zoveel uit of ik 2 httprequest uitvoer ipv een moeilijke(re) query?

Uiteraard is de javascript moeilijker, maar die heb ik al. Ik heb nu 2 simpele select queries, als ik 'm ombouw naar 1 http request moet ik een join in m'n query bouwen. Mijn serverside script wordt dan zwaarder.

Heeft het performance wijs zin om het te doen, los van het feit dat de clientside scripting eenvoudiger zal worden en dus in de toekomst eenvoudiger aan te passen

Ik bedenk me nu ook... hoe haal ik meerdere gegevens over? Ik echo nu het result van mijn query, die ik dan clientside in de http.responseText heb staan. Maar als ik serverside verschillende gegevns heb... hoe doe ik dat dan?
SuperRembomaandag 23 april 2007 @ 00:25
Nogmaals, je hoeft geen join in je query te stoppen. Je kunt nog steeds die 2 simpele query's uitvoeren. De meeste snelheidswinst haal je doordat je browser niet 2x verbinding met de server hoeft te maken. (En als het een beveiligde pagina is waarvoor je ingelogd moet zijn hoef je maar 1x de sessie te controleren.)

Het is so wie so handig om te weten hoe je meerdere gegevens tegelijk te sturen. De X van ajax staat voor XML; je zou dus XML kunnen gebruiken, maar het werken met XML in javascript (en in PHP) is omslachtig. JSON (zie http://json.org) werkt veel makkelijker. Je stuurt met php bijvoorbeeld

1   echo "{body:'Dit is de <em>body</em>', version:'3.14.15'}"

In javascript doe je weer een eval() van die tekst:

1
2
3
4
5
request.onreadystatechange = function() {
   var reponseData = eval(request.responseText);
   document.getElementById('PageBody').innerHTML = reponseData.body;
   document.getElementById('PageVersion').innerHTML = reponseData.version;
}


Makkelijk uit te breiden, duidelijk leesbaar en snel
George.W.Bushmaandag 23 april 2007 @ 08:28
quote:
Op maandag 23 april 2007 00:25 schreef SuperRembo het volgende:
Nogmaals, je hoeft geen join in je query te stoppen. Je kunt nog steeds die 2 simpele query's uitvoeren. De meeste snelheidswinst haal je doordat je browser niet 2x verbinding met de server hoeft te maken. (En als het een beveiligde pagina is waarvoor je ingelogd moet zijn hoef je maar 1x de sessie te controleren.)

Het is so wie so handig om te weten hoe je meerdere gegevens tegelijk te sturen. De X van ajax staat voor XML; je zou dus XML kunnen gebruiken, maar het werken met XML in javascript (en in PHP) is omslachtig. JSON (zie http://json.org) werkt veel makkelijker. Je stuurt met php bijvoorbeeld
[ code verwijderd ]

In javascript doe je weer een eval() van die tekst:
[ code verwijderd ]

Makkelijk uit te breiden, duidelijk leesbaar en snel
Hee, interessant! Ik ga dat JSon verder door lezen, ik neem aan dat ik er wat scripts voor op de server moet zetten?
quote:
JSON is a subset of the object literal notation of JavaScript. Since JSON is a subset of JavaScript, it can be used in the language with no muss or fuss.
Dus geen 'extra' scripts en dergelijke nodig, Out of the box?
SuperRembomaandag 23 april 2007 @ 08:40
quote:
Op maandag 23 april 2007 08:28 schreef George.W.Bush het volgende:
Dus geen 'extra' scripts en dergelijke nodig, Out of the box?
PHP heeft vanaf versie 5.2 json_encode() en json_decode(). Om json in javascript te decoden kun je eval() gebruiken. De andere kant op gaat iets minder eenvoudig, maar daar zijn makkelijk scripts voor te vinden (bijv. op json.org). Json encoden in javascript heb je eigenlijk niet zo vaak nodig, alleen als je vanuit js (veel) gegevens terug wil posten naar de server.
George.W.Bushmaandag 23 april 2007 @ 09:11
quote:
Op maandag 23 april 2007 08:40 schreef SuperRembo het volgende:

[..]

PHP heeft vanaf versie 5.2 json_encode() en json_decode(). Om json in javascript te decoden kun je eval() gebruiken.
Maar als ik zoals jij hierboven op die manier echo'ed dan kan ik het ook dmv van var reponseData = eval(request.responseText); 'opdelen'? Daarvoor hoef ik geen extra scripts te installeren?
quote:
De andere kant op gaat iets minder eenvoudig, maar daar zijn makkelijk scripts voor te vinden (bijv. op json.org). Json encoden in javascript heb je eigenlijk niet zo vaak nodig, alleen als je vanuit js (veel) gegevens terug wil posten naar de server.
Dat is inderdaad voor mij op dit moment niet van toepassing. Ik stuur een GET request naar de server
geertpmaandag 23 april 2007 @ 09:17
Ik heb een probleem met het uitvoeren van Javascripts. Ik heb een vers geïnstalleerde Windows XP computer, met IE6. IE wil echter geen JS uitvoeren. Bij de beveiligingsinstellingen staat alles wat met Javascrips te maken heeft ingeschakeld, dus daar zou het hem niet in moeten zitten.

Iemand enig idee waar dit aan ligt?

[ Bericht 0% gewijzigd door geertp op 23-04-2007 12:31:48 (tikfoutje) ]
Litphomaandag 23 april 2007 @ 10:23
quote:
Op maandag 23 april 2007 09:17 schreef geertp het volgende:
Bij de beveiligingsinstellingen staat alles wat met Java te maken heeft ingeschakeld, dus daar zou het hem niet in moeten zitten.
Gegeven het feit dat Java niets te maken heeft met Javascript, zou deze opmerking niet meer waarheid kunnen bevatten als je je best zou doen .
#ANONIEMmaandag 23 april 2007 @ 10:30
quote:
Op maandag 23 april 2007 10:23 schreef Litpho het volgende:

[..]

Gegeven het feit dat Java niets te maken heeft met Javascript, zou deze opmerking niet meer waarheid kunnen bevatten als je je best zou doen .
Ik denk dat hij ook even goed moet kijken naar wat hij precies wel en niet aangevinkt heeft
geertpmaandag 23 april 2007 @ 12:31
ik bedoelde inderdaad alles wat met javascripts te maken heeft staat ingeschakeld.
CraZaaymaandag 23 april 2007 @ 14:55
quote:
Op zondag 22 april 2007 23:55 schreef George.W.Bush het volgende:

[..]

Dat kan ook Ik stel alleen een tegenvraag... maak het zoveel uit of ik 2 httprequest uitvoer ipv een moeilijke(re) query?
Wat SuperRembo hierboven al zegt: wat let je om twee simpele queries uit te voeren als reactie op 1 request?
CraZaaymaandag 23 april 2007 @ 14:57
quote:
Op maandag 23 april 2007 08:40 schreef SuperRembo het volgende:

[..]

PHP heeft vanaf versie 5.2 json_encode() en json_decode().
Daarnaast kun je het (bijvoorbeeld voor oudere PHP-versies) ook gewoon als string doen zoals in SuperRembo's voorbeeld.
George.W.Bushmaandag 23 april 2007 @ 16:28
Of je plakt je twee serverside scripts iets nauwkeuriger bij elkaar Swets.

Hij gaat alleen over z'n nek van een enkele quote in mijn body tekst. En ik krijg een 'invalid label' net na versions echo "{body:'test', versions:'test'}";

[ Bericht 26% gewijzigd door George.W.Bush op 23-04-2007 17:04:33 ]
SuperRembomaandag 23 april 2007 @ 18:52
Sorry, haakjes vergeten:

1var data = eval("(" + jsonData + ")");
George.W.Bushmaandag 23 april 2007 @ 21:05
Wat doen die extra haakjes SR ?
SuperRembomaandag 23 april 2007 @ 21:48
Goeie vraag! Alleen weet ik niet of ik zelf wel helemaal begrijp.

De haakjes (de group operator) zorgen er in ieder geval voor dat wat er tussen staat als 1 statement wordt geëvalueerd (zoadat {..} een object wordt) en niet als serie statements (zodat {...} net als een functie-body uitgevoerd wordt).
cyberstalkermaandag 23 april 2007 @ 21:53
quote:
Op maandag 23 april 2007 21:48 schreef SuperRembo het volgende:
Goeie vraag! Alleen weet ik niet of ik zelf wel helemaal begrijp.

De haakjes (de group operator) zorgen er in ieder geval voor dat wat er tussen staat als 1 statement wordt geëvalueerd (zoadat {..} een object wordt) en niet als serie statements (zodat {...} net als een functie-body uitgevoerd wordt).
Nee. Die zorgen ervoor dat het een object is. Een object met waardes die je op naam kunt uitlezen.
SuperRembomaandag 23 april 2007 @ 22:31
Nee. Het object is dat stuk tussen van { tot }.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// 1.a
var foo = {name: 'Bar', value: 'baz'};
// 1.b
var foo; 
eval("foo = {name: 'Bar', value: 'baz'}");
// 1.c
var foo = eval("({name: 'Bar', value: 'baz'})");

// 2.a
var foo = ['Bar', 'baz'];
// 2.b
var foo; 
eval("foo = ['Bar', 'baz']");
// 2.c
var foo = eval("['Bar', 'baz']");

De vraag is waarom je bij 1.c wel een setje () nodig hebt, en bij het analoge geval 2.c bij een array niet.
cyberstalkermaandag 23 april 2007 @ 22:58
quote:
Op maandag 23 april 2007 22:31 schreef SuperRembo het volgende:
Nee. Het object is dat stuk tussen van { tot }.


[ code verwijderd ]
De vraag is waarom je bij 1.c wel een setje () nodig hebt, en bij het analoge geval 2.c bij een array niet.
Dat is omdat de [ ] voor een array staat en { } voor een object. Een gewone array kun je niet als associatieve array gebruiken, een object wel.
SuperRembomaandag 23 april 2007 @ 23:21
quote:
Op maandag 23 april 2007 22:58 schreef cyberstalker het volgende:

[..]

Dat is omdat de [ ] voor een array staat en { } voor een object. Een gewone array kun je niet als associatieve array gebruiken, een object wel.
Ja duh! [] staat voor array en {} voor object.

Het probleem is alleen dat {} staat voor een object, maar ook gebruikt wordt voor compound statements als bij if, for en while. Je voegt dus de haakjes toe om aan te geven dat je bij de eval een enkele expressie terug wil krijgen en niet een compound statement wilt uitvoeren.
Maar waar ik dat in de specs terug zou moeten vinden weet ik niet.
CraZaaydinsdag 24 april 2007 @ 00:10
quote:
Op maandag 23 april 2007 16:28 schreef George.W.Bush het volgende:

Hij gaat alleen over z'n nek van een enkele quote in mijn body tekst.
Escapen?
George.W.Bushdinsdag 24 april 2007 @ 10:22
quote:
Op dinsdag 24 april 2007 00:10 schreef CraZaay het volgende:

[..]

Escapen?
Ja ik trek de data serverside door htmlentities en rawurlencode, anders gaat het clientside script over z'n nek. En vervolgens decode ik clientside met unescape(responseData.body);

Alleen nu twijfel ik of unescape volgens RFC 1738 werkt. Met mijn testjes gaat het in ieder geval goed.
SuperRembodinsdag 24 april 2007 @ 12:37
Belangrijke regel bij escapen/encoden: alleen doen als het nodig is, en gebruik het juiste type!

Dus als je (in php) een tekst in een js-string wil zetten, dan moet je de qoutes escapen met een backslash. Html-encoden is nergens voor nodig (het gaat namelijk niet om html).

Escape() en unescape() in javascript kan je beter niet gebruiken. Wat escape() doet lijkt op urlencode() in php, maar het is net even anders. Je kunt beter encodeURIComponent() gebruiken om parameters voor een url te encoden. (encodeURIComponent bestaat alleen niet in IE5.0, maar da's toch een ouwe k***browser)
George.W.Bushdinsdag 24 april 2007 @ 15:34
quote:
Op dinsdag 24 april 2007 12:37 schreef SuperRembo het volgende:
Belangrijke regel bij escapen/encoden: alleen doen als het nodig is, en gebruik het juiste type!

Dus als je (in php) een tekst in een js-string wil zetten, dan moet je de qoutes escapen met een backslash. Html-encoden is nergens voor nodig (het gaat namelijk niet om html).
Ik heb het met 'addslashes' geprobeerd, maar dan kreeg ik ook een foutmelding.
Het gaat wel om HTML, de inhoud van de var komt rechtstreeks in een innerhtml terecht . Of bedoel je dat niet?
quote:
Escape() en unescape() in javascript kan je beter niet gebruiken. Wat escape() doet lijkt op urlencode() in php, maar het is net even anders. Je kunt beter encodeURIComponent() gebruiken om parameters voor een url te encoden. (encodeURIComponent bestaat alleen niet in IE5.0, maar da's toch een ouwe k***browser)
Maar het gaat erom dat het in php encode wordt en dat ik het in javascipt moet decoden.
CraZaaydinsdag 24 april 2007 @ 23:48
quote:
Op dinsdag 24 april 2007 15:34 schreef George.W.Bush het volgende:

Maar het gaat erom dat het in php encode wordt en dat ik het in javascipt moet decoden.
Addslashes zou voldoende moeten zijn. De rest (HTML-code) kan prima in een JS string afaik.
George.W.Bushwoensdag 25 april 2007 @ 08:18
quote:
Op dinsdag 24 april 2007 23:48 schreef CraZaay het volgende:

[..]

Addslashes zou voldoende moeten zijn.
Dat was dus niet voldoende, gaf een foutmelding.
cyberstalkerwoensdag 25 april 2007 @ 08:45
quote:
Op dinsdag 24 april 2007 23:48 schreef CraZaay het volgende:

[..]

Addslashes zou voldoende moeten zijn. De rest (HTML-code) kan prima in een JS string afaik.
Onzin. Al eens van enters gehoord?
CraZaaywoensdag 25 april 2007 @ 13:10
quote:
Op woensdag 25 april 2007 08:45 schreef cyberstalker het volgende:

[..]

Onzin. Al eens van enters gehoord?
Ik ga er vanuit dat zelfs iemand die minime JS kennis heeft dit weet. Dat heeft ook niets met de HTML entities te maken.

En ja, ik heb er ooit van gehoord. Ze betalen me niet voor client side code development omdat ik er nog nooit van gehoord heb.
CraZaaywoensdag 25 april 2007 @ 13:11
quote:
Op woensdag 25 april 2007 08:18 schreef George.W.Bush het volgende:

[..]

Dat was dus niet voldoende, gaf een foutmelding.
En welke is dat dan precies?
George.W.Bushwoensdag 25 april 2007 @ 14:36
quote:
Op woensdag 25 april 2007 13:11 schreef CraZaay het volgende:

[..]

En welke is dat dan precies?
1
2
3
4
5
Fout: unterminated string literal
Bronbestand: http://intranet/includes/functions.js
Regel: 11, Kolom: 7
Broncode:
({body:'<h2><font face=\"Verdana\">Welkom op Test\'s Intranet</font></h2>


1
2
3
4
5
function getpageBody(name) {
    http.open("GET", urlpageBody + escape(name), true);
    http.onreadystatechange = function() {
    if (http.readyState == 4) {
        var responseData = eval("("+http.responseText+")"); // hier dus


[ Bericht 16% gewijzigd door George.W.Bush op 25-04-2007 15:07:47 ]
CraZaaywoensdag 25 april 2007 @ 23:26
Er zitten geen line breaks in die string en hij wordt ook afgesloten met een enkele quote?

Die dubbele quotes hoef je trouwens niet te escapen.
George.W.Bushdonderdag 26 april 2007 @ 11:28
quote:
Op woensdag 25 april 2007 23:26 schreef CraZaay het volgende:
Er zitten geen line breaks in die string en hij wordt ook afgesloten met een enkele quote?

Die dubbele quotes hoef je trouwens niet te escapen.
Uiteraard zitten er linebreaks in die string, het is de body van een pagina .
Darkomendonderdag 26 april 2007 @ 11:51
dan heb je daar je probleem gevonden, linebreaks weghalen
CraZaaydonderdag 26 april 2007 @ 12:50
quote:
Op donderdag 26 april 2007 11:28 schreef George.W.Bush het volgende:

[..]

Uiteraard zitten er linebreaks in die string, het is de body van een pagina .
Uiteraard?

Linebreaks zijn geen onderdeel van de HTML ofzo. Dat jij ze er voor de leesbaarheid tussen zet is prima, maar JS gaat er wel van over z'n nek
George.W.Bushdonderdag 26 april 2007 @ 13:46
quote:
Op donderdag 26 april 2007 12:50 schreef CraZaay het volgende:

[..]

Uiteraard?

Linebreaks zijn geen onderdeel van de HTML ofzo. Dat jij ze er voor de leesbaarheid tussen zet is prima, maar JS gaat er wel van over z'n nek
Er valt weinig aan WYSIWYG editors als FCKeditor te doen die linebreaks uitspugen.
Maar ik zou serverside de linebreaks eruit kunnen filteren natuurlijk
Darkomendonderdag 26 april 2007 @ 15:06
Doen dan! php? nl2br ;-)
Je wilt natuurlijk geen extra 's :-)
George.W.Bushdonderdag 26 april 2007 @ 16:51
quote:
Op donderdag 26 april 2007 15:06 schreef Darkomen het volgende:
Doen dan! php? nl2br ;-)
Je wilt natuurlijk geen extra 's :-)

En dan moet ik nog een oplossing verzinnen waarmee ik alleen enkele quotes slash, aangezien addslashes enkele quotes, dubbele quotes en slashes slasht.
Darkomendonderdag 26 april 2007 @ 18:10
Zelfde als met de linebreaks
CraZaayvrijdag 27 april 2007 @ 00:35
1
2
3
4
5
6
7
<?php
// linebreaks weghalen
$string = str_replace(array("\n","\r"),'',$string);

// slashes escapen
$string = str_replace("'","\'",$string);
?>
RayManiavrijdag 27 april 2007 @ 19:43
Wie helpt mij! .

Ik wil een "add bookmark" script op mijn site maken. Opzich geen probleem met google, maar mijn gewenste script vind ik niet . Ik heb nu een script die het in alle browsers doet, alleen ik wil dat ook bij alle niet-IE-browsers het plaatje zichtbaar wordt wat de link naar de bookmarkfunctie geeft. In bijvoorbeeld FireFox wordt dan de alternatieve tekst en (Ctrl+D) laten zien, maar ik wil gewoon een plaatje zien.

Verder wil ik dat de script automatisch de site toevoegt waarop de site zich bevindt. Dus dat de link uit de adresbalk zeg maar wordt overgenomen.

Dit is het script wat ik nu gebruik, maar geen plaatje, en handmatige linktoevoeging dus .
SlimShadyvrijdag 27 april 2007 @ 20:11
dat laatste moet lukken.
maar wat bedoel je met 'plaatje'? en de bedoeling?
RayManiavrijdag 27 april 2007 @ 20:30
quote:
Op vrijdag 27 april 2007 20:11 schreef SlimShady het volgende:
dat laatste moet lukken.
maar wat bedoel je met 'plaatje'? en de bedoeling?
Dit principe zeg maar:

1<a href="javascript:bookmarksite('title_of_site', 'url_of_site')"><img src="/test.gif" alt="Voeg toe aan favorieten!" </a>


Als je op het plaatje "/test.gif" klikt op de site, voegt het toe in aan favorieten bij IE. Bij andere browsers is er "Voeg toe aan favorieten!" te lezen. Ik wil in alle tijden een plaatje omdat dat mooier in de layout past .
cyberstalkervrijdag 27 april 2007 @ 20:56
quote:
Op vrijdag 27 april 2007 20:30 schreef RayMania het volgende:

[..]

Dit principe zeg maar:


[ code verwijderd ]

Als je op het plaatje "/test.gif" klikt op de site, voegt het toe in aan favorieten bij IE. Bij andere browsers is er "Voeg toe aan favorieten!" te lezen. Ik wil in alle tijden een plaatje omdat dat mooier in de layout past .
Waar staat je site precies?
SlimShadyvrijdag 27 april 2007 @ 21:01
zo zou ik het doen.
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
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

   <head>
      <title>RayManiac</title>
   </head>

   <body>

<script type="text/javascript">

/***********************************************
* Bookmark site script- © Dynamic Drive DHTML code library (www.dynamicdrive.com)
* This notice MUST stay intact for legal use
* Visit Dynamic Drive at http://www.dynamicdrive.com/ for full source code
***********************************************/

/* Modified to support Opera */
function bookmarksite(title,url){
if (window.sidebar) // firefox
   window.sidebar.addPanel(title, url, "");
else if(window.opera && window.print){ // opera
   var elem = document.createElement('a');
   elem.setAttribute('href',url);
   elem.setAttribute('title',title);
   elem.setAttribute('rel','sidebar');
   elem.click();

else if(document.all)// ie
   window.external.AddFavorite(url, title);
}
</script>

<img src="./test.gif" alt="Voeg toe aan favorieten!" onclick="bookmarksite(window.document.title,window.location.href)" />

   </body>

</html>

alleen het firefox deel werkt hier niet. beveiliging.
en een andere manier kon ik niet vinden.
RayManiavrijdag 27 april 2007 @ 21:25
Hij doet het. Het kwam door de 'alt-tekst' die ik had toegevoegd aan het plaatje .

Thanks voor de hulp .
CraZaayvrijdag 27 april 2007 @ 22:39
quote:
Op vrijdag 27 april 2007 20:30 schreef RayMania het volgende:

[..]

Dit principe zeg maar:
[ code verwijderd ]

Als je op het plaatje "/test.gif" klikt op de site, voegt het toe in aan favorieten bij IE. Bij andere browsers is er "Voeg toe aan favorieten!" te lezen. Ik wil in alle tijden een plaatje omdat dat mooier in de layout past .
Zet dan aub wel tekst in de html en laat dat weg en een plaatje zien dmv CSS. En geen pseudo-code maar in de onclick. Is het allemaal accessible en unobtrusive
RayManiavrijdag 27 april 2007 @ 23:30
Hey hey, ik zie dummies in de TT staan hoor .
CraZaayvrijdag 27 april 2007 @ 23:42
Ook die kunnen het beter meteen goed doen
RayManiamaandag 30 april 2007 @ 12:08
Ik heb een favicon op m'n site, werkt prima, alleen is het mogelijk dat ik niet op elke pagina deze regel hoef toe te voegen?

1<link rel="shortcut icon" href="/favicon.ico" type="image/x-icon" />


En is het mogelijk om schuifbalken weg te laten? Laat maar .

[ Bericht 10% gewijzigd door RayMania op 30-04-2007 12:15:01 ]
SuperRembomaandag 30 april 2007 @ 12:14
Als je favicon.ico in je wwwroot staat dan hoef je die regel niet toe te voegen.

Schuifbalken weglaten kan met CSS: body {overflow:hidden}

(beide geen javascript vragen )
RayManiamaandag 30 april 2007 @ 12:17
quote:
Op maandag 30 april 2007 12:14 schreef SuperRembo het volgende:
Als je favicon.ico in je wwwroot staat dan hoef je die regel niet toe te voegen.

Schuifbalken weglaten kan met CSS: body {overflow:hidden}

(beide geen javascript vragen )
Ohja, ik zie het . Alleen in FireFox zie ik hem op elke pagina, niet met IE helaas.

En schuifbalken heb ik al gevonden .
Chandlerdinsdag 1 mei 2007 @ 17:08
Ik zit met een kleine vraag.

Ik wilde iets replacen uit een string, echter wordt alleen de eerst gevonden 'verandering' veranderd

1
2
    str = "zoeken/" + document.getElementById('zoek').value + ".html";
    str = str.replace(" ", "+");


voorbeeld

value = "hello world"; dan wordt dit hello+world

maar als ik hello nice little world er van maak dan wordt het hello+nice little world

Hoe kan dit? en wat is de simpele oplossing (een loopje? of is er een gemakkelijkere oplossing?)

zo dus

1
2
    str = "zoeken/" + document.getElementById('zoek').value + ".html";
    str = str.replace(/ /g, "+");


[ Bericht 22% gewijzigd door Chandler op 01-05-2007 17:23:42 ]
guitaristwoensdag 2 mei 2007 @ 00:50
1blaat.setAttribute("onfocus","alert('test')");


Waarom werkt dit wel in FF en niet in IE
guitaristwoensdag 2 mei 2007 @ 00:56
quote:
Op woensdag 2 mei 2007 00:50 schreef guitarist.nl het volgende:

[ code verwijderd ]

Waarom werkt dit wel in FF en niet in IE
Omdat het al laat is en je loopt te prutsen?
Geqxonwoensdag 2 mei 2007 @ 14:25
Ik ben met Ajax bezig op een manier die ik altijd al gebruik, al krijg ik sinds vandaag een hele leuke error toegesmeten:

"Permission denied to call method XMLHttpRequest.open".

Een bekend probleem?
SuperRembowoensdag 2 mei 2007 @ 14:27
Is het misschien een cross-domain request? Of anders een http request vanuit een https pagina?
Geqxonwoensdag 2 mei 2007 @ 14:45
Dom dom, het is inderdaad een cross-domain request. Heb het maar via PHP afgehandeld, dat gaat wat makkelijker
Darkomenwoensdag 2 mei 2007 @ 15:08
Had ik pas inderdaad pas ook
Uiteindelijk ook via php opgelost
mscholdonderdag 3 mei 2007 @ 23:26
quote:
Op maandag 30 april 2007 12:17 schreef RayMania het volgende:

[..]

Ohja, ik zie het . Alleen in FireFox zie ik hem op elke pagina, niet met IE helaas.

En schuifbalken heb ik al gevonden .
ie gebruikt em dan ook waar hij voor bedoelt is , favorite icon
http://en.wikipedia.org/wiki/Favicon

anyway vraagje:

ik heb op mijn site een Javascript navigatie menu echter als JS uitstaat heb je er natuurlijk geen hol aan...

hoe kan ik op een makkelijke, en nette, manier een melding geven dat Javascript aan moet staan.
de pagina wordt met een home made template parser geparsed, dus dat zou ik dan ergens moeten onderbreken ofzo....
nu krijg ik linksboven in de melding die tussen <noscript></noscript> staat, dwars door me layout heen
cyberstalkervrijdag 4 mei 2007 @ 00:59
quote:
Op donderdag 3 mei 2007 23:26 schreef mschol het volgende:

[..]

ie gebruikt em dan ook waar hij voor bedoelt is , favorite icon
http://en.wikipedia.org/wiki/Favicon

anyway vraagje:

ik heb op mijn site een Javascript navigatie menu echter als JS uitstaat heb je er natuurlijk geen hol aan...

hoe kan ik op een makkelijke, en nette, manier een melding geven dat Javascript aan moet staan.
de pagina wordt met een home made template parser geparsed, dus dat zou ik dan ergens moeten onderbreken ofzo....
nu krijg ik linksboven in de melding die tussen <noscript></noscript> staat, dwars door me layout heen
Noscript tags kun je ook met CSS stylen .
CraZaayvrijdag 4 mei 2007 @ 09:32
Ergens die melding neerzetten en vervolgens hiden met JS (wa dus alleen werkt als de bezoeker daadwerkelijk JS draait) is over het algemeen redelijk afdoende

Overigens ben ik erg benieuwd hoe je menu eruit ziet, want de meeste JS menu's kun je prima toegankelijk maken voor mensen zonder JS.
mscholvrijdag 4 mei 2007 @ 09:34
quote:
Op vrijdag 4 mei 2007 09:32 schreef CraZaay het volgende:
Ergens die melding neerzetten en vervolgens hiden met JS (wa dus alleen werkt als de bezoeker daadwerkelijk JS draait) is over het algemeen redelijk afdoende

Overigens ben ik erg benieuwd hoe je menu eruit ziet, want de meeste JS menu's kun je prima toegankelijk maken voor mensen zonder JS.
http://home.mschol.eu/
zie daar
menu is niet compleet, vanwege een bijna lege database maar idee is er

ik heb in de noscript tag gewoon een div gezet die me hele pagina overlapt, niet echt gebruikers vriendelijk maar ja, vind ik niet heel erg...
Geqxonvrijdag 4 mei 2007 @ 13:22
Ik wil mijn checkboxen graag door afbeeldingen vervangen, waarbij ik tegen een klein punt aan loop: Is het mogelijk om een value attribuut aan een image te hangen? Op het moment bekijk ik de status door een regular expression over de source van de image te gooien, maar dat is iets te overdreven
SlimShadyvrijdag 4 mei 2007 @ 13:40
werkt het attribuut 'checked' niet?
Geqxonvrijdag 4 mei 2007 @ 13:44
Het attribuut "checked" op een afbeelding?
SlimShadyvrijdag 4 mei 2007 @ 13:49
nee. oh, ik dacht dat je mbv CSS de checkboxes had vervangen door afbeeldingen.
Darkomenvrijdag 4 mei 2007 @ 13:55
je zou die values wanneer er geklikt word op die afbeelding in een hidden text field kunnen toevoegen?
Geqxonvrijdag 4 mei 2007 @ 15:25
quote:
Op vrijdag 4 mei 2007 13:49 schreef SlimShady het volgende:
nee. oh, ik dacht dat je mbv CSS de checkboxes had vervangen door afbeeldingen.
Dat zou ideaal zijn, is zoiets denk je mogelijk?
quote:
Op vrijdag 4 mei 2007 13:55 schreef Darkomen het volgende:
je zou die values wanneer er geklikt word op die afbeelding in een hidden text field kunnen toevoegen?
Is ook een goeie! Ik zat er net ook aan te denken om de alt-teg van de afbeelding hier voor te misbruiken, met een "True" of "False" waarde
SlimShadyvrijdag 4 mei 2007 @ 15:26
quote:
Op vrijdag 4 mei 2007 15:25 schreef Geqxon het volgende:

[..]

Dat zou ideaal zijn, is zoiets denk je mogelijk?
[..]
zeker. ik zal 'ns kijken...
SlimShadyvrijdag 4 mei 2007 @ 16:17
alleen css is dus niet voldoende. javascript is nodig.
er zijn demo's:
http://www.flog.co.nz/lab/ARC/ARC.htm
http://www.hellgatelondon.com/demons/
cyberstalkervrijdag 4 mei 2007 @ 19:36
quote:
Op vrijdag 4 mei 2007 16:17 schreef SlimShady het volgende:
alleen css is dus niet voldoende. javascript is nodig.
er zijn demo's:
http://www.flog.co.nz/lab/ARC/ARC.htm
http://www.hellgatelondon.com/demons/
Het is wel mogelijk met enkel CSS. Voor IE is dan wel een extra scriptje nodig omdat IE zoals gewoonlijk weer bagger is en de :checked pseudo-class niet ondersteunt. Dit kan waarschijnlijk wel met een unobtrusive scriptje maar daar weet ik het fijne niet van omdat ik nooit met IE werk.

Het principe is simpel. Je verbergt de checkbox met CSS door de display op none te zetten. Vervolgens zet je direct achter de checkbox een label attribuut die je met css de juiste achtergrondafbeelding geeft. Is de checked waarde van het attribuut verandert, dan wijzig je de achtergrondafbeelding. Een voorbeeldje:

De CSS
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
form input[type="checkbox"]
{
    display: none;
}

form input[type="checkbox"] + label[for]
{
    display: block;
    width: 20px;
    height: 20px;
    opacity: 0.7;
}

form input[type="checkbox"]:checked + label[for]
{
    opacity: 1;
}

form input[type="checkbox"] + label[for="waarde1"]
{
    background-image: url('images/value1_notchecked.png');
}


Het formulier:
1
2
3
4
5
6
7
8
<form action="whatever.php" method="post">
    <fieldset>
        <legend>Formulier met plaatjes als checkboxjes</legend>
        
        <input type="checkbox" id="value1" name="value1">
        <label for="value1"></label>
    </fieldset>
</form>


[ Bericht 5% gewijzigd door cyberstalker op 04-05-2007 19:46:31 ]
GBCHEATERzaterdag 5 mei 2007 @ 22:28
Hallo,
Ik ben bezig met een scriptje om te kijken of domeinnamen vrij zijn of niet. Dit doe ik met de volgende javascript:

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
var array = new Array("nl", "com");
function whois(tld, domein)

   xmlHttp=GetXmlHttpObject();
   if (xmlHttp==null)
   {
      alert ("Geen ajax ondersteuning.. BOOOOH!");
      return;
   }
   tekenTabel(domein);
   
   xmlHttp.onreadystatechange=function()
   {      
      if(xmlHttp.readyState==1 || xmlHttp.readyState==2 || xmlHttp.readyState==3)
      {
         document.getElementById(tld).innerHTML="Checking";
      }         
      if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
      { 
         document.getElementById(tld).innerHTML=xmlHttp.responseText;
      }      
   }
   
   xmlHttp.open("GET","test.php"+"?domein="+domein+"&tld="+tld,true);
   xmlHttp.setRequestHeader("Cache-Control", "no-cache");
   xmlHttp.send(null);
}

function start(domein)
{
        tekenTabel(domein);   
   for(x in array)
   {
      whois(array[x], domein);
   }   
}

function GetXmlHttpObject()
{
   var xmlHttp=null;
   try
   {
      // Firefox, Opera 8.0+, Safari
      xmlHttp=new XMLHttpRequest();
   }
   catch (e)
   {
      // Internet Explorer
      try
      {
         xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
      }
      catch (e)
      {
         xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
      }
   }
   return xmlHttp;
}

function tekenTabel(domein)
{
   var tabe = "";
   tabel='<table width="350" border="0" cellspacing="2" cellpadding="0">';
   tabel+='<tr>';
   tabel+='<td width="100" class="tdHeader">Tld</td>';
   tabel+='<td width="100" class="tdHeader">Beschikbaar</td>';
   tabel+='</tr>';
   
   for(x in array)
   {
      tabel+='<tr>';
      tabel+='<td align="center" valign="top" >'+array[x]+'</td>';      
      tabel+='<td align="center" valign="top" ><div id="'+array[x]+'"></div></td>';
      tabel+='</tr>';
   }
   
   tabel+='</table>';
   document.getElementById("result").innerHTML = tabel;
}


Ik roep de functie start aan als volgt:
1
2
3
4
5
6
<form name="frmTest">
            <input name="txtDomein" id="txtDomein" type="text">
            <input name="btnSubmit" type="button" value="whois" onclick="start(document.frmTest.txtDomein.value);"></form>
        <br>
        <br>
        <div id="result"></div>


Ik heb alleen het probleem dat het niet helemaal lekker werkt. Behalve het feit dat de layout totaal niet klopt, blijft in dit geval het nl domein op aangemaakt staan.

:edit:
Wat ik dus krijg is dit:
Tld Beschikbaar me.nl
Aangemaakt
me.com
Bezet

Wat doe ik fout?

[ Bericht 2% gewijzigd door GBCHEATER op 06-05-2007 01:01:49 ]
mscholzaterdag 5 mei 2007 @ 22:51
ik heb nu een zoek formulier:
1
2
3
4
<form id="search" name="search_form_basic" action="search/" method="GET">
        <input name="searchFor" type="text" size="10">
        <a href="javascript:void(0);" onClick="javascript:search_form_basic.submit();">search</a>
</form>

en ik wil het volgende hebben:

als ik zoek moet de url als volgt worden opgebouwd:
<domeinnaam>/search/verschillende_zoek_termen.html

kan dat uberhaupt met alleen Javascript em zo ja hoe moet ik dat aanpakken?
Geqxonzaterdag 5 mei 2007 @ 23:00
1
2
3
4
5
6
7
8
9
10
<script>
function runSearch(){
   var query = document.getElementById('query').value;
   query = query.replace(" ","_");
   window.location = "http://www.google.nl/" + query + ".html";
}
</script>

<input type="text" id="query">
<input type="button" onclick="runSearch()">


Al ben ik te lui het te runnen
mscholzaterdag 5 mei 2007 @ 23:06
quote:
Op zaterdag 5 mei 2007 23:00 schreef Geqxon het volgende:

[ code verwijderd ]

Al ben ik te lui het te runnen
geeft niet, et werkt

--edit--

het grootste gedeelte dan..
als ik }$%$# als string invoer kom ik uit op http://home.mschol.eu/search/ terwijl de javascript alert mij wel de juiste url terug geeft (http://home.mschol.eu/search/}$%$#.html )


even kijken met FF
hmm runsearch is not defined... -> die is opgelost maar nog steeds als je zo'n vreemde url doet, stopt ie...

nou ja jammer, voor latere zorg, bouw wel een extra check in me search..

[ Bericht 17% gewijzigd door mschol op 05-05-2007 23:23:21 ]
cyberstalkerzondag 6 mei 2007 @ 00:01
quote:
Op zaterdag 5 mei 2007 23:06 schreef mschol het volgende:

[..]

geeft niet, et werkt

--edit--

het grootste gedeelte dan..
als ik }$%$# als string invoer kom ik uit op http://home.mschol.eu/search/ terwijl de javascript alert mij wel de juiste url terug geeft (http://home.mschol.eu/search/}$%$#.html )


even kijken met FF
hmm runsearch is not defined... -> die is opgelost maar nog steeds als je zo'n vreemde url doet, stopt ie...

nou ja jammer, voor latere zorg, bouw wel een extra check in me search..
Misschien is het eenvoudiger om hier met een simpele mod_rewrite te werken. Werkt stukken eenvoudiger hier .
GBCHEATERzondag 6 mei 2007 @ 00:21
Ik heb mijn functie aangepast dat hij op xmlHttp.readyState 1 t/m 3 checking in de div zet, en op 4 de response neerzet. En ik heb de locatie verplaatst, zodat de tabel maar 1 keer word weggeschreven.

Dit heeft alweer hetzelfde resultaat:

TldBeschikbaarnl
Checking
com
Bezet

- Kan je wel met een tabel in een div werken via javascript? (omdat de layout zo verrot is)
- Kan ik een functie meerdere keren aanroepen met een parameter die verschillend is?

:edit:
Hmz, bug in Replique? Ik krijg elke keer wanneer ik mijn code edit een hidden field bij mijn formulier, met daarin mijn sessieid?
cyberstalkerzondag 6 mei 2007 @ 00:36
quote:
Op zondag 6 mei 2007 00:21 schreef GBCHEATER het volgende:
:edit:
Hmz, bug in Replique? Ik krijg elke keer wanneer ik mijn code edit een hidden field bij mijn formulier, met daarin mijn sessieid?
Is bekend en niet gevaarlijk. Het sessieid wat je ziet is niet eentje waarme je iets kunt .
GBCHEATERzondag 6 mei 2007 @ 00:40
quote:
Op zondag 6 mei 2007 00:36 schreef cyberstalker het volgende:

[..]

Is bekend en niet gevaarlijk. Het sessieid wat je ziet is niet eentje waarme je iets kunt .
Kreeg hetzelfde antwoord in de bug afdeling

Weet jij misschien een oplossing voor mijn Ajax probleem hierboven?
Geqxonzondag 6 mei 2007 @ 00:58
Ik kan je niet helpen, maar ik raad je aan om je HTML output eerst in een variabele te stoppen, en als je daar mee klaar bent iets in de trant van "innerhtml = output" te doen.

Daarmee wordt gelijk je huidige inhoud overschreden, en je sourcecode is wat netter.
GBCHEATERzondag 6 mei 2007 @ 01:00
quote:
Op zondag 6 mei 2007 00:58 schreef Geqxon het volgende:
Ik kan je niet helpen, maar ik raad je aan om je HTML output eerst in een variabele te stoppen, en als je daar mee klaar bent iets in de trant van "innerhtml = output" te doen.

Daarmee wordt gelijk je huidige inhoud overschreden, en je sourcecode is wat netter.
Dat heeft iig mijn layout probleem opgelost

Nou de rest nog
GBCHEATERzondag 6 mei 2007 @ 13:03
Ik heb nu mijn domeinenArray even uitgebreid. Ik heb nu:
1var array = new Array("com","net", "be", "nl");


En nu is dit de uitvoer:

Tld Beschikbaar
com Checking
net Bezet
be Checking
nl Bezet

Nummer 1 en 3 blijven dus weer op checking staan. Ik weet dat ik een uitvoer terugkrijg, ik kan namelijk debuggen met FireBug, en deze geeft aan dat ik wel antwoord terugkrijg.
SuperRembozondag 6 mei 2007 @ 14:37
GBCHEATER, lopen je httprequests niet door elkaar? Ik bedoel dat bijvoorbeeld het resultaat van de .com check bij het .net resultaat komt te staan. Om dat te controleren zou je wat extra debug info moeten schrijven (in js en php).
GBCHEATERzondag 6 mei 2007 @ 14:46
quote:
Op zondag 6 mei 2007 14:37 schreef SuperRembo het volgende:
GBCHEATER, lopen je httprequests niet door elkaar? Ik bedoel dat bijvoorbeeld het resultaat van de .com check bij het .net resultaat komt te staan. Om dat te controleren zou je wat extra debug info moeten schrijven (in js en php).
Daar maak ik me ook zorgen over, kan het uberhaupt wel zoals ik het nu heb gedaan? Wanneer ik zes tld's neem, word alleen de laatste vervangen. Dus ik ben inderdaad bang dat dat het is. Maar hoe zou je dat kunnen oplossen behalve voor elke tld een aparte functie schrijven?

:edit:
Als ik een alert plaats in xm.Http.readyState 1 t/m3 krijg ik 5 keer voor elke tld een alert. Plaats ik er een in xmlHttp.readystate 4 krijg ik hem alleen voor de laatste.
SlimShadyzondag 6 mei 2007 @ 14:47
nee, één functie die je x keer aanroept.
GBCHEATERzondag 6 mei 2007 @ 14:52
quote:
Op zondag 6 mei 2007 14:47 schreef SlimShady het volgende:
nee, één functie die je x keer aanroept.
Dat heb ik nu dus gedaan:

Voor elk element in de array roep ik deze functie aan:

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 whois(tld, domein)

   xmlHttp=GetXmlHttpObject();
   if (xmlHttp==null)
   {
      alert ("Geen ajax ondersteuning.. BOOOOH!");
      return;
   }
   
   xmlHttp.onreadystatechange=function()
   {      
      if(xmlHttp.readyState==1 || xmlHttp.readyState==2 || xmlHttp.readyState==3)
      {
         alert(tld+' controle');
         document.getElementById(tld).innerHTML="<blink>Checking</blink>";
      }         
      if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
      { 
         alert(tld+' is '+xmlHttp.responseText);
         if(xmlHttp.responseText == "Bezet" || xmlHttp.responseText == "Onbekend")
         {
            document.getElementById("bekijk"+tld).innerHTML = '<a href="http://www.'+domein+'.'+tld+'" target="_blank"><img src="images/bekijk_active.png" alt="Bekijk de pagina van de geregistreerde domein" border="0"></a>';
         }
         if(xmlHttp.responseText == "Bezet")
         {
            document.getElementById("informatie"+tld).innerHTML = '<a href="javascript: getInfo('+domein+','+tld+');"><img src="images/info_active.png" alt="Meer informatie" border="0"></a>';
         }
         document.getElementById(tld).innerHTML=xmlHttp.responseText;
      }      
   }
   
   xmlHttp.open("GET","test.php"+"?domein="+domein+"&tld="+tld,true);
   xmlHttp.setRequestHeader("Cache-Control", "no-cache");
   xmlHttp.send(null);
}


[ Bericht 9% gewijzigd door GBCHEATER op 06-05-2007 16:02:46 ]
SuperRembozondag 6 mei 2007 @ 16:18
quote:
Op zondag 6 mei 2007 14:46 schreef GBCHEATER het volgende:

[..]

Daar maak ik me ook zorgen over, kan het uberhaupt wel zoals ik het nu heb gedaan? Wanneer ik zes tld's neem, word alleen de laatste vervangen. Dus ik ben inderdaad bang dat dat het is. Maar hoe zou je dat kunnen oplossen behalve voor elke tld een aparte functie schrijven?

:edit:
Als ik een alert plaats in xm.Http.readyState 1 t/m3 krijg ik 5 keer voor elke tld een alert. Plaats ik er een in xmlHttp.readystate 4 krijg ik hem alleen voor de laatste.
Een alert is in een geval als dit niet handig, want het gaat juist om de volgorde waarin dingen (bijna tegelijk) gebeuren. Je kan beter wat loggen in bijvoorbeeld een textarea. (Daar heb ik ooit een scriptje voor gemaakt.)

Volgens mij mist er een "var" bij xmlHttp in whois(), ik weet niet of dat echt de oplossing is.
GBCHEATERzondag 6 mei 2007 @ 16:35
quote:
Op zondag 6 mei 2007 16:18 schreef SuperRembo het volgende:

[..]

Een alert is in een geval als dit niet handig, want het gaat juist om de volgorde waarin dingen (bijna tegelijk) gebeuren. Je kan beter wat loggen in bijvoorbeeld een textarea. (Daar heb ik ooit een scriptje voor gemaakt.)

Volgens mij mist er een "var" bij xmlHttp in whois(), ik weet niet of dat echt de oplossing is.
Mag ik je even bedanken :X

Dat was hem, ik heb aan de code toegevoegd:
1var xmlHttp = null;


En hij doet het!

Tnx 8)7
GBCHEATERzaterdag 12 mei 2007 @ 17:21
Was ik weer, met een nieuw probleempje:

Situatie:
Ik heb een scriptje om een C++ functie om te zetten naar wiki code. Nou heb je bij een functie meerdere parameters, of geen. Dus ik dacht van, dat doe ik via een functie:


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
function addParameter(aantal)
{
   var aantalParameters = aantal;
   var parameters = '';
   aantalParameters++;
   
   parameters += '<div id="parameterDiv"'+aantalParameters+'>';
   parameters += '<tr>';
    parameters += '<td align="center">';
    parameters += '<table width="450" border="0" cellspacing="0" cellpadding="0">';
    parameters += '<tr>';
    parameters += '<td class="subHeader"> ';
    parameters += '</td>';
    parameters += '<td class="subHeader">';
    parameters += '<div id="parameterTitel'+aantalParameters+'"></div>';
    parameters += '</td>';            
    parameters += '</tr>';       
    parameters += '<tr>';
    parameters += '<td width="100">Type:</td>';
    parameters += '<td><input name="txtParamaterType'+aantalParameters+'" id="txtParamaterType'+aantalParameters+'" type="text" class="txt" size="51" onkeyup="modifyParameterTitle('+aantalParameters+')"/></td>';
    parameters += '</tr>';
    parameters += '<tr>';
    parameters += '<td>Naam:</td>';
    parameters += '<td><input name="txtParameterNaam'+aantalParameters+'" id="txtParameterNaam'+aantalParameters+'" type="text" class="txt" size="51" onkeyup="modifyParameterTitle('+aantalParameters+')"/></td>';
    parameters += '</tr>';
    parameters += '<tr>';
    parameters += '<td valign="top">Omschrijving:</td>';
    parameters += '<td><textarea name="txtParameterOmschrijving'+aantalParameters+'" id="txtParameterOmschrijving'+aantalParameters+'" cols="38" rows="5" class="txt"></textarea></td>';
    parameters += '</tr>';                                        
    parameters += '</table>';
    parameters += '</td>';
    parameters += '</tr> ';
   parameters += '</div>';   

   document.getElementById("divFunctionParameter").innerHTML += parameters;
   document.getElementById("divVoegParameterToe").innerHTML = '<a href="javascript: addParameter('+aantalParameters+');">Voeg Toe</a>';
}


En dit start ik door een link in de pagina te zetten dmv:
1
2
3
4
5
6
body onload="javascript: start()"

function start()
{
   document.getElementById("divVoegParameterToe").innerHTML = '<a href="javascript: addParameter(0);">Voeg Toe</a>';
}


Dit werkt allemaal heel erg goed, maar het probleem is dat wanneer ik iets ingevuld heb in een van deze parameters en ik daarna op voeg toe druk, komt de tekst te vervallen die in de textboxjes en textfields staan. De titel in de parametertitel div blijft wel staan.

Enig idee hoe ik de inhoud van die textfields en textboxjes kan behouden?
GBCHEATERzaterdag 12 mei 2007 @ 18:04
Kan een modje deze en de post hierboven verwijderen, probleem is opgelost, maar kan mijn post hierboven niet editten.
super-muffinzaterdag 12 mei 2007 @ 21:00
Je kan ook de oplossing posten
GBCHEATERzaterdag 12 mei 2007 @ 21:09
quote:
Op zaterdag 12 mei 2007 21:00 schreef super-muffin het volgende:
Je kan ook de oplossing posten :)
De oplossing was bij een "bijplaatsing" eerst de bestaande parameters opvragen, en daarna de inhoud van de div te overschrijven (ja vies, maar werkt wel):

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
totaal = 0;
function addParameter()
{
   var parameters = '';
   
   //totaal ophogen
   totaal++;
   
   if(totaal != 1)
   {
      //oude parameters ophalen
      for(var x = 1; x < totaal; x++)
      {
         parameters += '<div id="parameterDiv'+x+'">';
         parameters += '<tr>';
         parameters += '<td align="center">';
         parameters += '<table width="450" border="0" cellspacing="0" cellpadding="0">';
         parameters += '<tr>';
         parameters += '<td class="subHeader"> ';
         parameters += '</td>';
         parameters += '<td class="subHeader">';
         parameters += '<div id="parameterTitel'+x+'">'+document.getElementById("parameterTitel"+x).innerHTML+'</div>';
         parameters += '</td>';            
         parameters += '</tr>';       
         parameters += '<tr>';
         parameters += '<td width="100">Type:</td>';
         parameters += '<td><input name="txtParamaterType'+x+'" id="txtParamaterType'+x+'" type="text" class="txt" size="51" onkeyup="modifyParameterTitle('+x+')" value="'+document.getElementById("txtParamaterType"+x).value+'"/></td>';
         parameters += '</tr>';
         parameters += '<tr>';
         parameters += '<td>Naam:</td>';
         parameters += '<td><input name="txtParameterNaam'+x+'" id="txtParameterNaam'+x+'" type="text" class="txt" size="51" onkeyup="modifyParameterTitle('+x+')" value="'+document.getElementById("txtParameterNaam"+x).value+'"/></td>';
         parameters += '</tr>';
         parameters += '<tr>';
         parameters += '<td valign="top">Omschrijving:</td>';
         parameters += '<td><textarea name="txtParameterOmschrijving'+x+'" id="txtParameterOmschrijving'+x+'" cols="38" rows="5" class="txt">'+document.getElementById("txtParameterOmschrijving"+x).value+'</textarea></td>';
         parameters += '</tr>';                                        
         parameters += '</table>';
         parameters += '</td>';
         parameters += '</tr> ';
         parameters += '</div>';         
      }
   }

   // nieuwe parameter toevoegen
   parameters += '<div id="parameterDiv'+totaal+'">';
   parameters += '<tr>';
   parameters += '<td align="center">';
   parameters += '<table width="450" border="0" cellspacing="0" cellpadding="0">';
   parameters += '<tr>';
   parameters += '<td class="subHeader"> ';
   parameters += '</td>';
   parameters += '<td class="subHeader">';
   parameters += '<div id="parameterTitel'+totaal+'"></div>';
   parameters += '</td>';            
   parameters += '</tr>';       
   parameters += '<tr>';
   parameters += '<td width="100">Type:</td>';
   parameters += '<td><input name="txtParamaterType'+totaal+'" id="txtParamaterType'+totaal+'" type="text" class="txt" size="51" onkeyup="modifyParameterTitle('+totaal+')"/></td>';
   parameters += '</tr>';
   parameters += '<tr>';
   parameters += '<td>Naam:</td>';
   parameters += '<td><input name="txtParameterNaam'+totaal+'" id="txtParameterNaam'+totaal+'" type="text" class="txt" size="51" onkeyup="modifyParameterTitle('+totaal+')"/></td>';
   parameters += '</tr>';
   parameters += '<tr>';
   parameters += '<td valign="top">Omschrijving:</td>';
   parameters += '<td><textarea name="txtParameterOmschrijving'+totaal+'" id="txtParameterOmschrijving'+totaal+'" cols="38" rows="5" class="txt"></textarea></td>';
   parameters += '</tr>';                                        
   parameters += '</table>';
   parameters += '</td>';
   parameters += '</tr> ';
   parameters += '</div>';
   
   document.getElementById("divFunctionParameter").innerHTML = parameters;   
}
CraZaayzaterdag 12 mei 2007 @ 23:53
Sowieso zou DOM-scripting wat netter zijn
GBCHEATERzondag 13 mei 2007 @ 00:03
Op wat voor opzicht dan? Heb net even de tutorial @ w3schools doorgekeken, maar zie het verschil niet helemaal, op het feit dat het in iets meer substapjes gaat, of getElementsByTagName gebruikt word.
CraZaayzondag 13 mei 2007 @ 00:07
Je voegt dan daadwerkelijk aan de DOM toe en manipuleert bestaande elementen. Nu stel je gewoon een string met HTML samen die je ergens invoegt.
GBCHEATERzondag 13 mei 2007 @ 00:21
owkay, maar stel ik heb de div test. hierin staat een table met 3 td's. Wat is dan het verschil dat ik zeg document.getElementById("tdId").innerHTML of ik zeg document.getElementById.getElementByTagName("td")[tagnr].innerHTML ?

Ik bedoel je zal er echt wel je redenen voor hebben om het te gebruiken, maar ik mis hem een beetje
Geqxonzondag 13 mei 2007 @ 00:22
Ik gok dat CraZaay het mooier vind als je de tabel doormiddel van javascript opbouwt. Dat je "nodes" creeert
GBCHEATERzondag 13 mei 2007 @ 00:25
quote:
Op zondag 13 mei 2007 00:22 schreef Geqxon het volgende:
Ik gok dat CraZaay het mooier vind als je de tabel doormiddel van javascript opbouwt. Dat je "nodes" creeert
Accoord, maar zit er nog een praktisch nut aan behalve dat het "mooier" is? Tot nu toe vind ik het alleen maar meer werk voor iets wat voor mij niets oplevert..
Geqxonzondag 13 mei 2007 @ 00:27
Trouwens, ondersteunt Javascript geen multiline variabelen?
GBCHEATERzondag 13 mei 2007 @ 00:33
Vanwege de vake variabele +=? Ik had slechte ervaringen met alles in een keer er in te gooien, vandaar dat ik het zo doe. Het kan dus wel
CraZaayzondag 13 mei 2007 @ 00:49
quote:
Op zondag 13 mei 2007 00:27 schreef Geqxon het volgende:
Trouwens, ondersteunt Javascript geen multiline variabelen?
Nee

En ja, het maken van nodes vind ik netter omdat je daarmee meer mogelijkheden hebt voor manipulatie achteraf. Al is dat voor jouw script niet noodzakelijk, ik maak er maar een gewoonte van
SuperRembozondag 13 mei 2007 @ 13:21
quote:
Op zondag 13 mei 2007 00:27 schreef Geqxon het volgende:
Trouwens, ondersteunt Javascript geen multiline variabelen?
Nee, maar een statement mag uiteraard wel over meerdere regels lopen (het is geen VB ). Dus

1
2
var foo = 'bar'
   + 'baz';

kan wel.
SuperRembozondag 13 mei 2007 @ 13:25
quote:
Op zondag 13 mei 2007 00:49 schreef CraZaay het volgende:
[..]
En ja, het maken van nodes vind ik netter omdat je daarmee meer mogelijkheden hebt voor manipulatie achteraf. Al is dat voor jouw script niet noodzakelijk, ik maak er maar een gewoonte van :)
Het maken van form elementen is wel erg irritant omdat je daar voor IE weer een uitzondering moet maken. In IE kan je namelijk niet achteraf het type van een input element veranderen. Daarom moet je daar zo'n halfbakken constuctie als

1var field = document.createElement('<input type="radio">)


gebruiken om een radiobutton te maken.
GBCHEATERzondag 13 mei 2007 @ 13:47
quote:
Op zondag 13 mei 2007 13:25 schreef SuperRembo het volgende:

[..]

Het maken van form elementen is wel erg irritant omdat je daar voor IE weer een uitzondering moet maken. In IE kan je namelijk niet achteraf het type van een input element veranderen. Daarom moet je daar zo'n halfbakken constuctie als
[ code verwijderd ]

gebruiken om een radiobutton te maken.
Maar dan ben je weer op het punt waar ik nu zit, oftewel gewoon complete html er tussen proppen.. toch?
SuperRembozondag 13 mei 2007 @ 14:09
Ik zou beginnen met het maken van een functie die 1 parameter aan de html toevoegd. Nu heb je die code er dubbel in staan. Je kunt ook nog wat dingen uit de html schrappen en verplaatsen naar css (zoals border en cellpadding).
Uiteindelijk zal een DOM oplossing denk ik cleanere code opleveren. Of dat de moeite loont weet ik niet, dat hangt ook af van het project.
CraZaaymaandag 14 mei 2007 @ 11:24
quote:
Op zondag 13 mei 2007 13:47 schreef GBCHEATER het volgende:

[..]

Maar dan ben je weer op het punt waar ik nu zit, oftewel gewoon complete html er tussen proppen.. toch?
Dit is net die ene uitzondering. Ik kan met niet herinneren wanneer ik voor het laatst een input-element heb toegevoegd aan de DOM
Chandlerwoensdag 16 mei 2007 @ 23:33
Ik heb in navolging op een topic in CSS voor Dummies een scriptje geschreven (half geript) om 2 divs te kunnen vergroten/ kleinen

Echter zit ik met een probleem. Maar ik zal eerst even de opzet uitleggen.

Ik heb 1 container div waarin 3 extra divs ziten. Deze divs zijn linkerkant, spacing (oftewel de bar om mee te scrollen) en de rechter div, Als ik met de middendiv (spacing) scroll wil de scroller nog wel eens het veld verkleinen en ik zie zelf de fout niet.

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
<script type="text/javascript"> 
<!-- 
// variables
var curWidth = 0; 
var curX = 0; 
var newX = 0;
var minWidthL = 150;     // min width of left div
var minWidthR = 300;     // min width of right div
var mouseButtonPos = "up"; 

//Function 'setPos(...) gets the original div width. 
function setPos(e) { 
    //For handling events in ie vs. w3c. 
    curEvent = ((typeof event == "undefined")? e: event); 
    //Sets mouse flag as down. 
    mouseButtonPos = "down"; 
    //Gets position of click. 
    curX = curEvent.clientX; 

    //Get the width of the div. 
    var tempWidthL = document.getElementById("treeView").style.width; 
    var tempWidthR = document.getElementById("treeList").style.width; 

    //Get the width value. 
    var widthArrayL = tempWidthL.split("p"); 
    var widthArrayR = tempWidthR.split("p"); 

    //Set the current width. 
    curWidthL = parseInt(widthArrayL[0]); 
    curWidthR = parseInt(widthArrayR[0]); 


//Function getPos(...) changes the width of the div while the mouse button is pressed. 
function getPos(e){ 
    if( mouseButtonPos == "down" ) { 
        //For handling events in ie vs. w3c. 
        curEvent = ((typeof event == "undefined")? e: event); 
        //Get new mouse position. 
        newX = curEvent.clientX; 

       //Calculate movement in pixels. 
       var pixelMovement = parseInt(newX - curX); 

       //Determine new width.  
       var newWidthL = parseInt(curWidthL + pixelMovement); 
       var newWidthR = parseInt(curWidthR - pixelMovement); 

       //Enforce a minimum width left.
       if (newWidthL < minWidthL) {
           newWidthR = document.getElementById("treeContainer").style.width - minWidthL;       
           newWidthL = minWidthL;
       }
       // min width right
       if (newWidthR < minWidthR) {
           newWidthL = document.getElementById("treeContainer").style.width - minWidthR;
           newWidthR = minWidthR;
       }
 
       //Set the new width. 
       document.getElementById("treeView").style.width = newWidthL + "px"; 
       document.getElementById("treeList").style.width = newWidthR + "px"; 
       //Set the new left of the splitter bar. 
       document.getElementById("splitterBar").style.left = parseInt(document.getElementById("treeView").style.width) + 5; 
    } 


//--> 
</script> 

<style type="text/css"> 
body {height:100%;} 


#container {
     width: 90%;
}
#treeView{ 
    top:20px; 
    left:20px; 
    height: 150px; 
    width:250px; 
    border: 1px solid #808080; 
    overflow: hidden; 



#treeList{ 
    top:0px; 
    left:20px; 
    height: 150px; 
    width:550px; 
    border: 1px solid #808080; 
    overflow: hidden; 


/*status bar style to act as the bottom border of the div*/ 
#splitterBar{ 
    float: left;
    cursor: e-resize; 
    display:block; 
    background-color: #c0c0c0; 
    top:20px; 
    left:262px; 
    margin-top:0px; 
    height:152px; 
    padding:0; 
    width: 4px; 

</style> 

</head> 
<!--onmousemove and onmouseup are on the body tag whereas onmousedown is on the "splitterBar" div--> 
<body onmousemove="getPos(event)" onmouseup="mouseButtonPos='up'"> 
<div id="treeContainer">
    <div id="treeView" style="float: left; height:150px; width: 250px; overflow: auto;"> 
        <p>Deze div is 250px breed en kan breder gemaakt worden, maar helaas kan de div niet kleiner worden dan 150 pixels<br />Deze div is 250px breed en kan breder gemaakt worden, maar helaas kan de div niet kleiner worden dan 150 pixels<br />Deze div is 250px breed en kan breder gemaakt worden, maar helaas kan de div niet kleiner worden dan 150 pixels<br />Deze div is 250px breed en kan breder gemaakt worden, maar helaas kan de div niet kleiner worden dan 150 pixels<br /></p> 
    </div> 
    <div onmousedown="setPos(event)" id="splitterBar"></div> 
    <div id="treeList" style="float: left; height:150px; width: 550px; overflow: auto;"> 
        <p>Dit is de rechter div die 550pixels breed is, deze kan smaller en breder worden maar niet kleiner dan 250px;</p> 
    </div>
</div> 
</body> 
</html> 


Wie wil eens kijken en zeggen wat ik fout doe? ik krijg in FF trouwens ook vaak de volgende fout:

1
2
3
Error: Error in parsing value for property 'width'.  Declaration dropped.
Source File: file:///D:/test1.html
Line: 0




Ps. Als ik een vaste breedte voor de container gebruik is er niets aan de hand. Maar zou graag willen dat alles simpel een variabele breedte kan houden..

werkende code met een vaste breedte

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
<script type="text/javascript"> 
<!-- 
// variables
var curWidth = 0; 
var curX = 0; 
var newX = 0;
var minWidthL = 150;     // min width of left div
var minWidthR = 300;     // min width of right div
var conWidth  = 800;
var mouseButtonPos = "up"; 

//Function 'setPos(...) gets the original div width. 
function setPos(e) { 
    //For handling events in ie vs. w3c. 
    curEvent = ((typeof event == "undefined")? e: event); 
    //Sets mouse flag as down. 
    mouseButtonPos = "down"; 
    //Gets position of click. 
    curX = curEvent.clientX; 

    //Get the width of the div. 
    var tempWidthL = document.getElementById("treeView").style.width; 
    var tempWidthR = document.getElementById("treeList").style.width; 

    //Get the width value. 
    var widthArrayL = tempWidthL.split("p"); 
    var widthArrayR = tempWidthR.split("p"); 

    //Set the current width. 
    curWidthL = parseInt(widthArrayL[0]); 
    curWidthR = parseInt(widthArrayR[0]); 


//Function getPos(...) changes the width of the div while the mouse button is pressed. 
function getPos(e){ 
    if( mouseButtonPos == "down" ) { 
        //For handling events in ie vs. w3c. 
        curEvent = ((typeof event == "undefined")? e: event); 
        //Get new mouse position. 
        newX = curEvent.clientX; 

       //Calculate movement in pixels. 
       var pixelMovement = parseInt(newX - curX); 

       //Determine new width.  
       var newWidthL = parseInt(curWidthL + pixelMovement); 
       var newWidthR = parseInt(curWidthR - pixelMovement); 

       //Enforce a minimum width left.
       if (newWidthL < minWidthL) {
           newWidthR = parseInt(conWidth - minWidthL);       
           newWidthL = minWidthL;
       }
       // min width right
       if (newWidthR < minWidthR) {
           newWidthL = parseInt(conWidth - minWidthR);
           newWidthR = minWidthR;
       }
 
       //Set the new width. 
       defaultStatus = "L:" + newWidthL + " R:" + newWidthR;
       document.getElementById("treeView").style.width = newWidthL + "px"; 
       document.getElementById("treeList").style.width = newWidthR + "px"; 
       //Set the new left of the splitter bar. 
       document.getElementById("splitterBar").style.left = parseInt(document.getElementById("treeView").style.width) + 5; 
    } 


//--> 
</script> 

<style type="text/css"> 
body {height:100%;} 


#container {
     width: 90%;
}
#treeView{ 
    top:20px; 
    left:20px; 
    height: 150px; 
    width:250px; 
    border: 1px solid #808080; 
    overflow: hidden; 



#treeList{ 
    top:0px; 
    left:20px; 
    height: 150px; 
    width:550px; 
    border: 1px solid #808080; 
    overflow: hidden; 


/*status bar style to act as the bottom border of the div*/ 
#splitterBar{ 
    float: left;
    cursor: e-resize; 
    display:block; 
    background-color: #c0c0c0; 
    top:20px; 
    left:262px; 
    margin-top:0px; 
    height:152px; 
    padding:0; 
    width: 4px; 

</style> 

</head> 
<!--onmousemove and onmouseup are on the body tag whereas onmousedown is on the "splitterBar" div--> 
<body onmousemove="getPos(event)" onmouseup="mouseButtonPos='up'"> 
<div id="treeContainer">
    <div id="treeView" style="float: left; height:150px; width: 250px; overflow: auto;"> 
        <p>Deze div is 250px breed en kan breder gemaakt worden, maar helaas kan de div niet kleiner worden dan 150 pixels<br />Deze div is 250px breed en kan breder gemaakt worden, maar helaas kan de div niet kleiner worden dan 150 pixels<br />Deze div is 250px breed en kan breder gemaakt worden, maar helaas kan de div niet kleiner worden dan 150 pixels<br />Deze div is 250px breed en kan breder gemaakt worden, maar helaas kan de div niet kleiner worden dan 150 pixels<br /></p> 
    </div> 
    <div onmousedown="setPos(event)" id="splitterBar"></div> 
    <div id="treeList" style="float: left; height:150px; width: 550px; overflow: auto;"> 
        <p>Dit is de rechter div die 550pixels breed is, deze kan smaller en breder worden maar niet kleiner dan 250px;</p> 
    </div>
</div> 
</body> 
</html> 


[ Bericht 17% gewijzigd door Chandler op 16-05-2007 23:43:17 ]
Swetseneggermaandag 21 mei 2007 @ 21:31
Iemand een idee hoe ik met een onChange het readonly atribuut voor een form element kan triggeren?

onChange="getElementById('element').readonly='readonly'"

lijkt niet te werken in ieder geval
Litphomaandag 21 mei 2007 @ 21:36
quote:
Op maandag 21 mei 2007 21:31 schreef Swetsenegger het volgende:
Iemand een idee hoe ik met een onChange het readonly atribuut voor een form element kan triggeren?

onChange="getElementById('element').readonly='readonly'"

lijkt niet te werken in ieder geval
readOnly (met hoofdletter O) is een boolean, dus true of false.
Swetseneggermaandag 21 mei 2007 @ 21:41
quote:
Op maandag 21 mei 2007 21:36 schreef Litpho het volgende:

[..]

readOnly (met hoofdletter O) is een boolean, dus true of false.
Bedankt!
Maar dit werkt ook niet
1onChange="getElementById('module').readOnly='true'"

Ook niet als ik true buiten quotes zet.
SlimShadymaandag 21 mei 2007 @ 21:45
true is een keyword, dus niet tussen aanhalingstekens.
edit: oh.
Litphomaandag 21 mei 2007 @ 21:48
quote:
Op maandag 21 mei 2007 21:41 schreef Swetsenegger het volgende:

[..]

Bedankt!
Maar dit werkt ook niet
[ code verwijderd ]

Ook niet als ik true buiten quotes zet.
http://www.xs4all.nl/~litpho/test.html werkt hier prima.

Weet je zeker dat de onchange getriggerd wordt?
Swetseneggermaandag 21 mei 2007 @ 21:52
quote:
Op maandag 21 mei 2007 21:48 schreef Litpho het volgende:

[..]

http://www.xs4all.nl/~litpho/test.html werkt hier prima.

Weet je zeker dat de onchange getriggerd wordt?
Ja, ziet er naar uit dat ik het niet op een select element kan toepassen, alleen op text elementen.
Litphomaandag 21 mei 2007 @ 21:54
quote:
Op maandag 21 mei 2007 21:52 schreef Swetsenegger het volgende:

[..]

Ja, ziet er naar uit dat ik het niet op een select element kan toepassen, alleen op text elementen.
Select heeft readOnly niet als property, maar is natuurlijk wel altijd read only. Heb je al naar disabled gekeken als alternatief?

Waarbij je er even rekening mee moet houden dat disabled elementen niet meegesubmit worden, dus bij een onsubmit evt. weer enabled moeten worden. Schoon is anders, maar misschien maakt het voor wat je wil niet uit .
Swetseneggermaandag 21 mei 2007 @ 22:02
quote:
Op maandag 21 mei 2007 21:54 schreef Litpho het volgende:

[..]

Select heeft readOnly niet als property, maar is natuurlijk wel altijd read only. Heb je al naar disabled gekeken als alternatief?

Waarbij je er even rekening mee moet houden dat disabled elementen niet meegesubmit worden, dus bij een onsubmit evt. weer enabled moeten worden. Schoon is anders, maar misschien maakt het voor wat je wil niet uit .
die zocht ik.
Ik verwerk server side, dus de page wordt na een submit toch refreshed.
Litphomaandag 21 mei 2007 @ 22:03
quote:
Op maandag 21 mei 2007 22:02 schreef Swetsenegger het volgende:

[..]

die zocht ik.
Ik verwerk server side, dus de page wordt na een submit toch refreshed.
* noteert weer een tevreden klant *
Geqxondinsdag 22 mei 2007 @ 21:23
Om mijn AJAX multi-taskend te maken, zat ik er te denken aan een array vol met HTTP objecten, en één functie die alle onreadystatechanges afhandeld.

Om er voor te zorgen dat de functie httpReponse() wel weet van welk HTTP object hij werk moet afleveren, wil ik een ID meegeven. Mijn huidige code:

1http.onreadystatechange = httpReponse;


En toen liep ik vast. onreadystatechange = httpReponse(uniqueid) doet helaas niets... iemand tips?


Mijn volledige code:
1
2
3
4
5
6
7
8
9
10
var http = new Array();
function getData(url,id) {
   if (!http[id])
      http[id] = getHTTPObject();

   //prompt("Requested URL:",url);
   http[id].open("GET", url, true);
   http[id].send(null);
   http[id].onreadystatechange = httpResponse;
}


getHTTPObject geeft afhankelijk van de browser een XMLHttpRequest of een ActiveXObject terug.

[ Bericht 41% gewijzigd door Geqxon op 22-05-2007 21:28:57 ]
Geqxondinsdag 22 mei 2007 @ 21:38
Dat was simpel:
1   http[id].onreadystatechange = httpResponse(id);


Het enige kleine puntje is dat httpResponse slechts 1 keer aangesproken wordt, dan dat is als getData aangeroepen wordt / dus als de readystate 1 is. Als de readystate 2, 3 of 4 is gebeurd er verder weinig. Zie ik soms iets over het hoofd? :)
SuperRembodinsdag 22 mei 2007 @ 23:19
Eigenlijk gebeurt er alleen iets bij readystate 4, de andere readystates zijn niet zo boeiend.
Geqxondinsdag 22 mei 2007 @ 23:37
In mijn programma al helemaal niet, mijn probleem is dus dat de functie httpResponse op deze manier alleen aan wordt gesproken zodra de gebruiker op de link klikt. Zodra de readystate op 4 schiet, dan wordt de functie niet autmotisch door de onreadystatechange aangeroepen. Wat hij normaal dus prima doet

Het script werkt verder prima als ik mijn responsefunctie een paar tellen later handmatig aanroep, maar dat is een beetje non-AJAX
SuperRembodinsdag 22 mei 2007 @ 23:47
Hoe ziet httpResponse er uit?
Ik zou trouwens eerst de onreadystatechange zetten, en daarna pas de request versturen.
Geqxondinsdag 22 mei 2007 @ 23:52
De onreadystatechange heb ik van plaatst verwisseld, al maakte dat niet veel uit. Maar bedankt voor de tip, staat wel weer wat netter.

httpResponse:

1
2
3
4
5
function httpResponse(id) {
   alert('You rang? ' + http[id].readyState);
   
   if (http[id].readyState == 4) {   
      if (http[id].responseXML){   


Wanneer ik deze handmatig (dmv. een button) aanspreek, voert hij zijn werkt verder prima uit. Het zit hem denk ik in de .onreadystatechange = ...
Geqxondinsdag 22 mei 2007 @ 23:55
Met dank aan Google een ietwat ranzige oplossing:

1http[id].onreadystatechange = function () { httpResponse(id) }


Het werkt!
SuperRembodinsdag 22 mei 2007 @ 23:59
onreadystatechange heeft geen parameters, dus id in httpResponse is altijd null.
Iets als dit werkt waarschijnlijk beter:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
var http = new Array();
var http = new Array();
function getData(url, id) {
   if (!http[id]) {
        http[id] = getHTTPObject();
   } 
   var request = http[id];
   request.open("GET", url, true);
   request.onreadystatechange = function() {
     if (request.readyState == 4) {
          processResponse(request.respnseXML);
     }
   }
   request.send(null);
}
Geqxonwoensdag 23 mei 2007 @ 00:24
Elke keer als de readystate veranderd, roept hij de functie "httpResponse(id)" aan, waarbij "id" in dit geval ingevuld wordt doordat ik die meegeef in het "getData(url, id)" gedeelte. Dus als voorbeeld: "httpResponse(11433)". Werkt voor nu prima, en dat is voor mij persoonlijk prima

Ik moet je toegeven, de manier waar jij het op doet is inderdaad netter.
Darkomendonderdag 24 mei 2007 @ 15:06
Kan je met javascript ook de flashvars van een embeded flash aanpassen?
heb gegoogled maar kwam er niet echt uit, enige oplossing leek op een zweedse site te staan, en nu is mn zweeds niet zo goed.
CraZaaydonderdag 24 mei 2007 @ 16:23
In principe kun je hun waarde in de DOM aanpassen, maar ik betwijfel of Flash hier realtime iets mee doet en of het uberhaupt doet wat je verwacht
splendordinsdag 29 mei 2007 @ 19:51
Ik wil een lijst met namen (elk hun eigen div) van plaats laten verwisselen.
Dus bijvoorbeeld:

Persoon 1
Persoon 2 ^
Persoon 3 ^
Persoon 4 ^

Zodra ik dan bij persoon 2 op ^ druk moet ie omwisselen met persoon 1 en wordt de lijst

Persoon 2
Persoon 1 ^
Persoon 3 ^
Persoon 4 ^


Hoe kan ik dit makkelijk en snel oplossen in javascript? Ik heb van alles gezocht maar het enige wat in de buurt komt is drag en drop maar daar hangt een heel script achter dat je cursor positie leest en dat lijkt me overdreven.
Hoe kan dit snel, makkelijk en efficient?
Farenjidinsdag 29 mei 2007 @ 20:30
Drag en drop heb je niet nodig en wordt veel te ingewikkeld. Je kan moeilijk gaan lopen doen met het Document Object Model, maar het kan veel simpeler met innerHTML.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<script type="text/javascript">

function verwissel (i1, i2) {
   var obj1 = document.getElementById(i1);
   var obj2 = document.getElementById(i2);
   
   var temp = obj1.innerHTML;
   obj1.innerHTML = obj2.innerHTML;
   obj2.innerHTML = temp;
   
}

</script>


<span id="item1">Persoon 1</span>
<a href="#" onclick="verwissel('item1', 'item2'); return false;">down</a><br />

<span id="item2">Persoon 2</span>
<a href="#" onclick="verwissel('item2', 'item1'); return false;">up</a>
<a href="#" onclick="verwissel('item2', 'item3'); return false;">down</a><br />

<span id="item3">Persoon 3</span>
<a href="#" onclick="verwissel('item2', 'item3'); return false;">up</a><br />
splendordinsdag 29 mei 2007 @ 20:36
Dankje. dat was precies wat ik zocht ja. Ik was zelf al met DOMs aan het proberen maar dat lukte echt niet.
Maar als ik het goed begrijp wisselt innerHTML dus de span + inhoud om met een andere span+inhoud?
SuperRembodinsdag 29 mei 2007 @ 20:36
Het kan ook simpel met DOM functies:

1
2
3
4
5
6
7
window.onload = function() 
{
   var list1 = document.getElementById('l1');
   var item2 = document.getElementById('i2');
   var item3 = document.getElementById('i3');
   list1.insertBefore(item3, item2);
}


1
2
3
4
5
6
<ul id="l1">
   <li id="i1">uno</li>
   <li id="i2">due</li>
   <li id="i3">tre</li>
   <li id="i4">quattro</li>
</ul>
Swetseneggerdinsdag 29 mei 2007 @ 20:40
bestaat er een javascript equivalent voor stristr?
SuperRembodinsdag 29 mei 2007 @ 20:47
Als je case-insensitive wil zoeken in javascript dan akn dat met een regexp: myString.match(/foo/i)

(of zonder regexp: myString.toLowerCase().indexOf('foo'))
Swetseneggerdinsdag 29 mei 2007 @ 21:02
quote:
Op dinsdag 29 mei 2007 20:47 schreef SuperRembo het volgende:
Als je case-insensitive wil zoeken in javascript dan akn dat met een regexp: myString.match(/foo/i)

(of zonder regexp: myString.toLowerCase().indexOf('foo'))
Bedankt!
Chandlerdonderdag 31 mei 2007 @ 14:57
Ik heb een klein vraagje, met AJAX lees in een document uit (XML) nu wil ik deze XML uitlezen in Javascript en daarmee een select (options) vullen.

Nu probeerde ik zo (lokaal) een stukje XML in te laden.

1
2
var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.xml = xmlhttp.responseText; 


Nu krijg ik een error op de 1e regel in IE en FF, werkt dit lokaal niet? of doe ik wat fout? alles wordt in een functie aangeroepen!
CraZaaydonderdag 31 mei 2007 @ 15:43
In FF (of iedere browser behalve IE 5+) gaat deze Microsoft-implementatie sowieso niet werken. Waarom gebruik je niet gewoon een JS library ofzo om dit af te vangen, ipv het wiel opnieuw uit te vinden?
Chandlerdonderdag 31 mei 2007 @ 16:04
Ik heb gezocht naar zo'n stukje maar kon dit helaas niet vinden is er dan een oplossing dat ik wel XML documenten kan lezen in zowel IE als FF en kan bewerken oftewel uit een XML een option list kan vullen?

Het laden is mij nu gelukt, maar kan helaas niets vinden over hoe ik XML omzet naar een select list.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
            if (window.ActiveXObject)
            {  
                xmlDoc       = new ActiveXObject("Microsoft.XMLDOM");
                xmlDoc.async = false;
             xmlDoc.loadXML(xmlhttp.responseText); 
            }
            else if (document.implementation && document.implementation.createDocument)
            {
                var parser = new DOMParser();
                var xmlDoc = parser.parseFromString(xmlhttp.responseText,"text/xml");
            }
            else
            {
                alert('Neem een andere brouwser!');
            }


Werkt in IE en FF

Tevens wil ik dus de volgende list uitlezen

1
2
3
4
5
6
7
8
9
10
11
<?xml version="1.0" encoding="ISO-8859-1" ?> 
<gfxpoll>
    <action>layouts</action>
    <count>4</count>
    <layouts>
        <item>Default</item>
        <item>GFX</item>
        <item>Test</item>
        <item>Woei</item>
    </layouts>
</gfxpoll>


[ Bericht 82% gewijzigd door Chandler op 31-05-2007 16:34:39 ]
#ANONIEMdonderdag 31 mei 2007 @ 17:02
Je moet even zoeken op javascript xml reader, dan kan je zien hoe je met javascript xml afloopt. Het is dan een koud kunstje om te zorgen dat je tijdens het aflopen een select list opbouwt.
SuperRembodonderdag 31 mei 2007 @ 19:08
Waarom gebruik je niet gewoon XMLHttpRequest.responseXML?
Farenjidonderdag 31 mei 2007 @ 20:14
Met ajax moet je inderdaad niet het wiel opnieuw gaan uitvinden. Gebruik een javascript library of framework, zoals bijv Dojo of de Yahoo User Interface library of een andere eventueel (ik heb alleen ervaring met deze twee).

Doe dat echt! Dat scheelt zo ontzettend veel tijd en frustratie! Het is bijna niet meer te doen om zelf alles uit te zoeken op dit gebied, tenzij je hardcore masochist bent.
Geqxondonderdag 31 mei 2007 @ 20:32
Het wiel opnieuw uitvinden? Een XML pagina opvragen en parsen stelt toch weinig voor?
Chandlerdonderdag 31 mei 2007 @ 20:43
quote:
Op donderdag 31 mei 2007 19:08 schreef SuperRembo het volgende:
Waarom gebruik je niet gewoon XMLHttpRequest.responseXML?
Die zocht ik dus

Maar hoe kan ik dan de nodes etc verder uitlezen?

Wil gewoon <action>*</action> uitlezen plus <layouts>(<item>*</item>)</layouts> that's all..
SlimShadydonderdag 31 mei 2007 @ 21:01
met *.childNodes *.parentChild *.nextSibling enzo.
Farenjidonderdag 31 mei 2007 @ 21:01
quote:
Op donderdag 31 mei 2007 20:32 schreef Geqxon het volgende:
Het wiel opnieuw uitvinden? Een XML pagina opvragen en parsen stelt toch weinig voor?
Ik weet niet hoe lang jij al bezig bent met ajax maar het behelst heel wat meer dan alleen een xml pagina parsen hoor...
Chandlerdonderdag 31 mei 2007 @ 21:03
quote:
Op donderdag 31 mei 2007 21:01 schreef SlimShady het volgende:
met *.childNodes *.parentChild *.nextSibling enzo.
Tnx, Ik zal morgen eens kijken wat dit aan info oplevert!