abonnement Unibet Coolblue Bitvavo
pi_44343806


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
pi_44343887
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();
}
"If you are depressed you shouldn't be in C major!" - Rick Beato
pi_44343992
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 ]
pi_44344406
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!).
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
pi_44344482
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.
"If you are depressed you shouldn't be in C major!" - Rick Beato
pi_44344507
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
pi_44348052
tvp voor de toekomst
The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_44867927
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?
pi_44875150
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
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
pi_44882835
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
pi_44887190
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 ).
"If you are depressed you shouldn't be in C major!" - Rick Beato
pi_44889040
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)
pi_44890545
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.
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
pi_44893639
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
  Moderator zondag 31 december 2006 @ 16:06:10 #15
1424 crew  Jimbo
Gråtrunka
pi_44893682
lol ik kijk net in de topic en ik denk wtf doet dit in ONZ..... zit ik in DIG
Op donderdag 20 augustus 2020 17:36 schreef Notorious_Roy het volgende:
Naast alle onzin die je uitkraamt heb je af en toe ook gewoon heel verstandige posts.
Op dinsdag 10 augustus 2021 16:32 schreef yvonne het volgende:
@:Jimbo voor mod, yeah *O*
pi_44894041
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
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
pi_45241507
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?
pi_45242414
Misschien een idee om de slash in je regular expression te escapen met een backslash?
1   reg = /<abbr([^>]>([^<]<\/abbr>/g;
"If you are depressed you shouldn't be in C major!" - Rick Beato
pi_45243618
Staat 'ie ook, maar Fok! neemt em niet over.

Hier staat een online voorbeeld.
http://lab.danielpunt.nl/abbr.html
pi_45243967
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.
"If you are depressed you shouldn't be in C major!" - Rick Beato
pi_45244109
uhm, ik ben niet zo goed in JavaScript. Maar ik ga het proberen. Zo leer ik er ook nog eens van
Dank je wel
pi_45246392
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.
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
pi_45246955
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.
pi_45253231
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)
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
pi_45401554
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!
pi_46009720
Korte vraag; kun je bij een alertbox de text op de OK-button veranderen?
Zo ja; hoe?
pi_46014684
Kort antwoord: nee.
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
pi_46014872
Helaas. Zo'n vermoeden had ik al.
  woensdag 7 februari 2007 @ 12:46:10 #29
5637 koekiemonster
Goede reaktie ------------>
pi_46071209
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?
koekje erbij?
  woensdag 7 februari 2007 @ 17:30:17 #30
5637 koekiemonster
Goede reaktie ------------>
pi_46079973
help?
koekje erbij?
pi_46081008
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.
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
pi_46084588
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?
The people who lost my respect will never get a capital letter for their name again.
Like trump...
  woensdag 7 februari 2007 @ 20:03:09 #33
87845 SynchroSteve
Synchronous Insane
pi_46084916
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?
pi_46096459
Cookie wordt toch ook aangemaakt wanneer de popup zich niet laat zien?
The people who lost my respect will never get a capital letter for their name again.
Like trump...
  donderdag 8 februari 2007 @ 09:51:32 #35
85514 ralfie
!Yvan eht nioj
pi_46097051
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
pi_46108906
true true, ik zal er eens naar kijken
The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_46296097
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?
The people who lost my respect will never get a capital letter for their name again.
Like trump...
  woensdag 14 februari 2007 @ 14:40:47 #38
85514 ralfie
!Yvan eht nioj
pi_46296526
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';
pi_46302126
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?
The people who lost my respect will never get a capital letter for their name again.
Like trump...
  woensdag 14 februari 2007 @ 18:33:30 #40
85514 ralfie
!Yvan eht nioj
pi_46302472
Je definieert retvalue in een functie... Zelfs een simpele taal als Javascript kent scoping
pi_46303864
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';

The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_46492580
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 ]
pi_46508061
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
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
pi_46510286
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
  FOK!-Schrikkelbaas dinsdag 27 februari 2007 @ 16:04:18 #45
1972 Swetsenegger
Egocentrische Narcist
pi_46735494
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?
pi_46735636
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>
  FOK!-Schrikkelbaas dinsdag 27 februari 2007 @ 16:09:51 #47
1972 Swetsenegger
Egocentrische Narcist
pi_46735708
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.
pi_46735788
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.
pi_46736912
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 ]
  FOK!-Schrikkelbaas dinsdag 27 februari 2007 @ 16:58:37 #50
1972 Swetsenegger
Egocentrische Narcist
pi_46737722
Opgelost, klein foutje met returns
pi_46740711
Gaaf m'n op gebruikt (tevens tvp )
  FOK!-Schrikkelbaas woensdag 28 februari 2007 @ 08:49:48 #52
1972 Swetsenegger
Egocentrische Narcist
pi_46762296
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?
pi_46762601
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");
  FOK!-Schrikkelbaas woensdag 28 februari 2007 @ 09:15:57 #54
1972 Swetsenegger
Egocentrische Narcist
pi_46762685
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
  FOK!-Schrikkelbaas woensdag 28 februari 2007 @ 09:16:55 #55
1972 Swetsenegger
Egocentrische Narcist
pi_46762706
hij kan ik trouwens een string aanvullen met 0'en tot een bepaalde lengte?
  FOK!-Schrikkelbaas woensdag 28 februari 2007 @ 09:22:51 #56
1972 Swetsenegger
Egocentrische Narcist
pi_46762802
dit werkt
1sText = sText.replace(/\s+/g,"\r\n")

wazig, maar goed.
  woensdag 28 februari 2007 @ 09:24:40 #57
12880 CraZaay
prettig gestoord
pi_46762838
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?
pi_46762848
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.
  FOK!-Schrikkelbaas woensdag 28 februari 2007 @ 09:56:59 #59
1972 Swetsenegger
Egocentrische Narcist
pi_46763576
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
pi_46764147
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;
}
  woensdag 28 februari 2007 @ 10:38:51 #61
85514 ralfie
!Yvan eht nioj
pi_46764544
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
  FOK!-Schrikkelbaas woensdag 28 februari 2007 @ 11:50:43 #62
1972 Swetsenegger
Egocentrische Narcist
pi_46766403
thanks ralfie.

hier niemand op zoek naar een technische webmaster functie?
pi_46768823
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
pi_46770521
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.
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
  FOK!-Schrikkelbaas woensdag 28 februari 2007 @ 15:13:45 #65
1972 Swetsenegger
Egocentrische Narcist
pi_46773291
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?
  woensdag 28 februari 2007 @ 15:41:04 #66
85514 ralfie
!Yvan eht nioj
pi_46774347
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
  FOK!-Schrikkelbaas woensdag 28 februari 2007 @ 15:42:35 #67
1972 Swetsenegger
Egocentrische Narcist
pi_46774399
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....
pi_46774501
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.
  FOK!-Schrikkelbaas woensdag 28 februari 2007 @ 16:04:14 #69
1972 Swetsenegger
Egocentrische Narcist
pi_46775244
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='_';
pi_46775359
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"') + '"');
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
pi_46944444
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 ]
  maandag 5 maart 2007 @ 17:07:29 #72
12880 CraZaay
prettig gestoord
pi_46946547
OnChange="javascript:select_email(document.getElementById('forum_naam').options[selectedIndex].value);"

kan een stuk simpeler overigens:

onchange="select_email(this.value);"
pi_46971814
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 ]
  dinsdag 6 maart 2007 @ 13:12:53 #74
12880 CraZaay
prettig gestoord
pi_46972062
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
pi_46972156
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
  dinsdag 6 maart 2007 @ 14:09:20 #76
12880 CraZaay
prettig gestoord
pi_46974020
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.
pi_46975540
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 ]
  dinsdag 6 maart 2007 @ 16:14:17 #78
12880 CraZaay
prettig gestoord
pi_46978871
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.
pi_46979511
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
pi_47002747
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)
ウプピエ 八十三 &lt;&lt; u-pu-pi-e hachi-ju-san, ik denk ik zeg het er maar ff bij :P
pi_47005083
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')
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
  woensdag 7 maart 2007 @ 09:32:12 #82
12880 CraZaay
prettig gestoord
pi_47006047
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 ]
  woensdag 7 maart 2007 @ 22:19:05 #83
104583 cyberstalker
Een krachtig neen!
pi_47034199
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);
        }
}
Hope for the best, prepare for the worst.
pi_47035225
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?
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
pi_47044569
Interessant scriptje!, en ik denk dat SR gelijk heeft.
pi_47405496
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".
pi_47406835
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.
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
pi_47407316
1request.onreadystatechange = parseCheck_content($div);

Dit roept toch een functie aan? Volgens mij mis ik ergens iets? :@
pi_47408985
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
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
pi_47413697
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.
  dinsdag 20 maart 2007 @ 20:57:24 #91
74523 BaggerUser
ModderFokker!
pi_47487187
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..
De enige echte BaggerUser!
Riemen
fiets kopen
  dinsdag 20 maart 2007 @ 21:15:23 #92
85514 ralfie
!Yvan eht nioj
pi_47487965
1
2
3
<?php
$NAVIGATIE_rechts 
.='<li><a href="#" onClick="showHint(\\\'ARTIKELEN\\\')">ARTIKELEN</a></li>';
?>

even uit mn kopke
  dinsdag 20 maart 2007 @ 21:27:07 #93
74523 BaggerUser
ModderFokker!
pi_47488520
maar 3 \ had ik nog niet geprobeerd.. kan dat ookal

dankjewel!!!! kan ik eindelijk weer een stukje verder!
De enige echte BaggerUser!
Riemen
fiets kopen
pi_47550276
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
pi_47550818
is er wel een element met het id aap0?

pi_47551239
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.
pi_47551425
Zeer zeker erg vreemd, omdat ik em heb gekopieerd van jou en hij werkt wel.
http://www.danielpunt.nl/geqxie.htm
pi_47551932
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 :)
pi_47588909
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?
pi_47589050
Ja dat kan. Gewoon de src van het plaatje veranderen met javascript.
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
  vrijdag 23 maart 2007 @ 17:51:43 #101
12880 CraZaay
prettig gestoord
pi_47589075
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';".
pi_47589085
Okay, dan weet ik dat het nuttig is om verder te zoeken
Heb je nog een hint waar ik naar moet zoeken?
pi_47589094
Ah, dankje, CraZaay!
pi_47589659
http://www.buyshit.nl/keygen/

Hier staat alles dat je nodig hebt
pi_47590724
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?
pi_47590968
1
2
3
4
5
<p id="tekstveld">Doei!</p>

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


innerHTML is het magische woord :)
  zaterdag 24 maart 2007 @ 14:04:49 #107
12880 CraZaay
prettig gestoord
pi_47609852
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.
pi_47609901
Pff, heb even wat rond zitten zoeken, en denk dat ik toch maar op zoek ga naar een hoster die ook php/sql heeft.
  zaterdag 24 maart 2007 @ 23:00:03 #109
12880 CraZaay
prettig gestoord
pi_47626967
Want dan denk je een betere user experience te bieden door de pagina steeds te herladen?
pi_47627037
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 .
"If you are depressed you shouldn't be in C major!" - Rick Beato
pi_47627579
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!
  maandag 26 maart 2007 @ 13:28:11 #112
12880 CraZaay
prettig gestoord
pi_47670125
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?
pi_47670237
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.
"If you are depressed you shouldn't be in C major!" - Rick Beato
pi_47736856
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 ]
pi_47739161
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:)
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
pi_47739697
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
pi_47751502
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.
  zaterdag 31 maart 2007 @ 20:54:59 #118
74523 BaggerUser
ModderFokker!
pi_47870451
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 ?
De enige echte BaggerUser!
Riemen
fiets kopen
pi_47870741
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.
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
pi_47871981
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++;
   }
  zaterdag 31 maart 2007 @ 23:24:35 #121
62215 qu63
..de tijd drinkt..
pi_47876119
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? :)
It's Time To Shine
[i]What would life be like without rhethorical questions?[/i]
  zondag 1 april 2007 @ 10:41:21 #122
3677 SuperRembo
Sinds 1998
pi_47885282
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.
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
  zondag 1 april 2007 @ 15:13:46 #123
62215 qu63
..de tijd drinkt..
pi_47893011
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"?
It's Time To Shine
[i]What would life be like without rhethorical questions?[/i]
  zondag 1 april 2007 @ 15:59:58 #124
3677 SuperRembo
Sinds 1998
pi_47894751
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.
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
  zondag 1 april 2007 @ 16:25:05 #125
62215 qu63
..de tijd drinkt..
pi_47895533
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..
It's Time To Shine
[i]What would life be like without rhethorical questions?[/i]
  zondag 1 april 2007 @ 19:13:19 #126
104583 cyberstalker
Een krachtig neen!
pi_47900191
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.
Hope for the best, prepare for the worst.
pi_47966646
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?
  dinsdag 3 april 2007 @ 16:37:37 #128
12880 CraZaay
prettig gestoord
pi_47968673
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.
pi_47969053
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...
pi_47970390
dat werkte dus niet. nu heb ik het vervangen door insertbefore, removechild en nextsibling.
en nu werkt het wel. opgelost.
pi_48174186
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?

Op vrijdag 12 augustus 2005 01:46 schreef ElisaB het volgende:
Wat is SHERMAN leuk he Bloes O+
pi_48175908
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.
pi_48176372
Het gaat waarschijnlijk IE worden, maar het is dus niet zo simpel als dat dat ik dacht?
Op vrijdag 12 augustus 2005 01:46 schreef ElisaB het volgende:
Wat is SHERMAN leuk he Bloes O+
pi_48177051
Op wat voor manier moet er ingelogd worden? Een username / password veld op een pagina oid?
pi_48177450
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..
Op vrijdag 12 augustus 2005 01:46 schreef ElisaB het volgende:
Wat is SHERMAN leuk he Bloes O+
  dinsdag 10 april 2007 @ 15:39:28 #136
104583 cyberstalker
Een krachtig neen!
pi_48179493
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.
Hope for the best, prepare for the worst.
pi_48180612
Omdat ik slechts een beperkte HTML/javascript kennis heb en mij dit het makkelijkste leek..
Op vrijdag 12 augustus 2005 01:46 schreef ElisaB het volgende:
Wat is SHERMAN leuk he Bloes O+
pi_48218226
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?
pi_48219020
Gevonden. Het is mijn image-resizer, die bij een display = "none" onder IE bij de waarde imageobject.width doodleuk 0 aangeeft.
pi_48533509
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?
O say, can you see, by the dawn's early light. What so proudly we hailed, at the twilight's last gleaming...
  vrijdag 20 april 2007 @ 11:27:12 #141
104583 cyberstalker
Een krachtig neen!
pi_48533755
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.
Hope for the best, prepare for the worst.
pi_48534111
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 ]
O say, can you see, by the dawn's early light. What so proudly we hailed, at the twilight's last gleaming...
  vrijdag 20 april 2007 @ 11:44:23 #143
104583 cyberstalker
Een krachtig neen!
pi_48534413
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.
Hope for the best, prepare for the worst.
pi_48534557
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
O say, can you see, by the dawn's early light. What so proudly we hailed, at the twilight's last gleaming...
  vrijdag 20 april 2007 @ 11:51:31 #145
104583 cyberstalker
Een krachtig neen!
pi_48534672
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.
Hope for the best, prepare for the worst.
pi_48534821
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 ]
O say, can you see, by the dawn's early light. What so proudly we hailed, at the twilight's last gleaming...
pi_48536413
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 ]
O say, can you see, by the dawn's early light. What so proudly we hailed, at the twilight's last gleaming...
pi_48537958
Opgelost, functie 2 in functie 1 geintegreerd
O say, can you see, by the dawn's early light. What so proudly we hailed, at the twilight's last gleaming...
  vrijdag 20 april 2007 @ 13:29:47 #149
104583 cyberstalker
Een krachtig neen!
pi_48538043
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.
Hope for the best, prepare for the worst.
pi_48539530
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
O say, can you see, by the dawn's early light. What so proudly we hailed, at the twilight's last gleaming...
pi_48546120
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?
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
pi_48547296
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?
O say, can you see, by the dawn's early light. What so proudly we hailed, at the twilight's last gleaming...
pi_48549832
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.
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
pi_48610865
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
O say, can you see, by the dawn's early light. What so proudly we hailed, at the twilight's last gleaming...
  zondag 22 april 2007 @ 20:24:18 #155
12880 CraZaay
prettig gestoord
pi_48611096
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.
pi_48611932
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.
O say, can you see, by the dawn's early light. What so proudly we hailed, at the twilight's last gleaming...
  zondag 22 april 2007 @ 23:31:00 #157
12880 CraZaay
prettig gestoord
pi_48618022
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?
pi_48618670
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?
O say, can you see, by the dawn's early light. What so proudly we hailed, at the twilight's last gleaming...
pi_48619318
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
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
pi_48622131
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?
O say, can you see, by the dawn's early light. What so proudly we hailed, at the twilight's last gleaming...
pi_48622266
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.
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
pi_48622729
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
O say, can you see, by the dawn's early light. What so proudly we hailed, at the twilight's last gleaming...
pi_48622830
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) ]
Soaves ne vent, smurges absent.
pi_48624473
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 .
"If you are depressed you shouldn't be in C major!" - Rick Beato
pi_48624655
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
pi_48628473
ik bedoelde inderdaad alles wat met javascripts te maken heeft staat ingeschakeld.
Soaves ne vent, smurges absent.
  maandag 23 april 2007 @ 14:55:24 #167
12880 CraZaay
prettig gestoord
pi_48633326
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?
  maandag 23 april 2007 @ 14:57:37 #168
12880 CraZaay
prettig gestoord
pi_48633425
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.
pi_48636992
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 ]
O say, can you see, by the dawn's early light. What so proudly we hailed, at the twilight's last gleaming...
pi_48642010
Sorry, haakjes vergeten:

1var data = eval("(" + jsonData + ")");
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
pi_48647344
Wat doen die extra haakjes SR ?
O say, can you see, by the dawn's early light. What so proudly we hailed, at the twilight's last gleaming...
pi_48649283
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).
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
  maandag 23 april 2007 @ 21:53:22 #173
104583 cyberstalker
Een krachtig neen!
pi_48649469
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.
Hope for the best, prepare for the worst.
pi_48650940
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.
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
  maandag 23 april 2007 @ 22:58:27 #175
104583 cyberstalker
Een krachtig neen!
pi_48651842
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.
Hope for the best, prepare for the worst.
pi_48652617
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.
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
  dinsdag 24 april 2007 @ 00:10:50 #177
12880 CraZaay
prettig gestoord
pi_48653928
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?
pi_48659300
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.
O say, can you see, by the dawn's early light. What so proudly we hailed, at the twilight's last gleaming...
pi_48663557
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)
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
pi_48670195
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.
O say, can you see, by the dawn's early light. What so proudly we hailed, at the twilight's last gleaming...
  dinsdag 24 april 2007 @ 23:48:42 #181
12880 CraZaay
prettig gestoord
pi_48689421
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.
pi_48693746
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.
O say, can you see, by the dawn's early light. What so proudly we hailed, at the twilight's last gleaming...
  woensdag 25 april 2007 @ 08:45:43 #183
104583 cyberstalker
Een krachtig neen!
pi_48694222
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?
Hope for the best, prepare for the worst.
  woensdag 25 april 2007 @ 13:10:07 #184
12880 CraZaay
prettig gestoord
pi_48702383
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.
  woensdag 25 april 2007 @ 13:11:14 #185
12880 CraZaay
prettig gestoord
pi_48702431
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?
pi_48705604
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 ]
O say, can you see, by the dawn's early light. What so proudly we hailed, at the twilight's last gleaming...
  woensdag 25 april 2007 @ 23:26:52 #187
12880 CraZaay
prettig gestoord
pi_48724252
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.
pi_48732602
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 .
O say, can you see, by the dawn's early light. What so proudly we hailed, at the twilight's last gleaming...
pi_48733543
dan heb je daar je probleem gevonden, linebreaks weghalen
  donderdag 26 april 2007 @ 12:50:39 #190
12880 CraZaay
prettig gestoord
pi_48735586
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
pi_48737349
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
O say, can you see, by the dawn's early light. What so proudly we hailed, at the twilight's last gleaming...
pi_48740125
Doen dan! php? nl2br ;-)
Je wilt natuurlijk geen extra 's :-)
pi_48743937
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.
O say, can you see, by the dawn's early light. What so proudly we hailed, at the twilight's last gleaming...
pi_48746364
Zelfde als met de linebreaks
  vrijdag 27 april 2007 @ 00:35:10 #195
12880 CraZaay
prettig gestoord
pi_48760465
1
2
3
4
5
6
7
<?php
// linebreaks weghalen
$string = str_replace(array("\n","\r"),'',$string);

// slashes escapen
$string = str_replace("'","\'",$string);
?>
pi_48788107
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 .
Achter-elkaar-bezochte-Ajax-thuiswedstrijden-meter: [b]29[/b].
[b]Laatste wedstrijd:[/b] FC Timişoara. [b]Volgende:[/b] ADO Den Haag.
Ray's Statshoekje - 2009/2010.
pi_48789427
dat laatste moet lukken.
maar wat bedoel je met 'plaatje'? en de bedoeling?
pi_48790108
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 .
Achter-elkaar-bezochte-Ajax-thuiswedstrijden-meter: [b]29[/b].
[b]Laatste wedstrijd:[/b] FC Timişoara. [b]Volgende:[/b] ADO Den Haag.
Ray's Statshoekje - 2009/2010.
  vrijdag 27 april 2007 @ 20:56:43 #199
104583 cyberstalker
Een krachtig neen!
pi_48790901
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?
Hope for the best, prepare for the worst.
pi_48791062
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.
pi_48791780
Hij doet het. Het kwam door de 'alt-tekst' die ik had toegevoegd aan het plaatje .

Thanks voor de hulp .
Achter-elkaar-bezochte-Ajax-thuiswedstrijden-meter: [b]29[/b].
[b]Laatste wedstrijd:[/b] FC Timişoara. [b]Volgende:[/b] ADO Den Haag.
Ray's Statshoekje - 2009/2010.
  vrijdag 27 april 2007 @ 22:39:10 #202
12880 CraZaay
prettig gestoord
pi_48793570
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
pi_48794885
Hey hey, ik zie dummies in de TT staan hoor .
Achter-elkaar-bezochte-Ajax-thuiswedstrijden-meter: [b]29[/b].
[b]Laatste wedstrijd:[/b] FC Timişoara. [b]Volgende:[/b] ADO Den Haag.
Ray's Statshoekje - 2009/2010.
  vrijdag 27 april 2007 @ 23:42:00 #204
12880 CraZaay
prettig gestoord
pi_48795193
Ook die kunnen het beter meteen goed doen
pi_48861160
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 ]
Achter-elkaar-bezochte-Ajax-thuiswedstrijden-meter: [b]29[/b].
[b]Laatste wedstrijd:[/b] FC Timişoara. [b]Volgende:[/b] ADO Den Haag.
Ray's Statshoekje - 2009/2010.
pi_48861264
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 )
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
pi_48861323
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 .
Achter-elkaar-bezochte-Ajax-thuiswedstrijden-meter: [b]29[/b].
[b]Laatste wedstrijd:[/b] FC Timişoara. [b]Volgende:[/b] ADO Den Haag.
Ray's Statshoekje - 2009/2010.
pi_48894657
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 ]
The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_48913017
1blaat.setAttribute("onfocus","alert('test')");


Waarom werkt dit wel in FF en niet in IE
PS4 online: micro_nl
pi_48913172
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?
PS4 online: micro_nl
pi_48926291
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?
  woensdag 2 mei 2007 @ 14:27:52 #212
3677 SuperRembo
Sinds 1998
pi_48926369
Is het misschien een cross-domain request? Of anders een http request vanuit een https pagina?
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
pi_48927022
Dom dom, het is inderdaad een cross-domain request. Heb het maar via PHP afgehandeld, dat gaat wat makkelijker
pi_48927809
Had ik pas inderdaad pas ook
Uiteindelijk ook via php opgelost
pi_48986024
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
  vrijdag 4 mei 2007 @ 00:59:23 #216
104583 cyberstalker
Een krachtig neen!
pi_48989325
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 .
Hope for the best, prepare for the worst.
  vrijdag 4 mei 2007 @ 09:32:32 #217
12880 CraZaay
prettig gestoord
pi_48993690
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.
pi_48993719
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...
pi_49001815
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
pi_49002514
werkt het attribuut 'checked' niet?
pi_49002656
Het attribuut "checked" op een afbeelding?
pi_49002893
nee. oh, ik dacht dat je mbv CSS de checkboxes had vervangen door afbeeldingen.
pi_49003184
je zou die values wanneer er geklikt word op die afbeelding in een hidden text field kunnen toevoegen?
pi_49006420
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
pi_49006453
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...
pi_49008301
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/
  vrijdag 4 mei 2007 @ 19:36:09 #227
104583 cyberstalker
Een krachtig neen!
pi_49015379
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 ]
Hope for the best, prepare for the worst.
pi_49048554
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 ]
pi_49049189
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?
pi_49049415
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
pi_49049579
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 ]
  zondag 6 mei 2007 @ 00:01:38 #232
104583 cyberstalker
Een krachtig neen!
pi_49051031
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 .
Hope for the best, prepare for the worst.
  zondag 6 mei 2007 @ 00:21:04 #233
87811 GBCHEATER
Wat nou?
pi_49051515
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?
  zondag 6 mei 2007 @ 00:36:44 #234
104583 cyberstalker
Een krachtig neen!
pi_49051887
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 .
Hope for the best, prepare for the worst.
  zondag 6 mei 2007 @ 00:40:16 #235
87811 GBCHEATER
Wat nou?
pi_49051977
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?
pi_49052394
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.
  zondag 6 mei 2007 @ 01:00:46 #237
87811 GBCHEATER
Wat nou?
pi_49052438
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
  zondag 6 mei 2007 @ 13:03:38 #238
87811 GBCHEATER
Wat nou?
pi_49059222
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.
  zondag 6 mei 2007 @ 14:37:40 #239
3677 SuperRembo
Sinds 1998
pi_49061858
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).
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
  zondag 6 mei 2007 @ 14:46:17 #240
87811 GBCHEATER
Wat nou?
pi_49062088
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.
pi_49062133
nee, één functie die je x keer aanroept.
  zondag 6 mei 2007 @ 14:52:25 #242
87811 GBCHEATER
Wat nou?
pi_49062270
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 ]
  zondag 6 mei 2007 @ 16:18:27 #243
3677 SuperRembo
Sinds 1998
pi_49064989
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.
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
  zondag 6 mei 2007 @ 16:35:49 #244
87811 GBCHEATER
Wat nou?
pi_49065533
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
pi_49304052
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?
pi_49305448
Kan een modje deze en de post hierboven verwijderen, probleem is opgelost, maar kan mijn post hierboven niet editten.
pi_49310668
Je kan ook de oplossing posten
pi_49311004
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;   
}
  zaterdag 12 mei 2007 @ 23:53:28 #249
12880 CraZaay
prettig gestoord
pi_49318060
Sowieso zou DOM-scripting wat netter zijn
pi_49318432
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.
  zondag 13 mei 2007 @ 00:07:50 #251
12880 CraZaay
prettig gestoord
pi_49318631
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.
pi_49319057
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
pi_49319101
Ik gok dat CraZaay het mooier vind als je de tabel doormiddel van javascript opbouwt. Dat je "nodes" creeert
pi_49319208
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..
pi_49319298
Trouwens, ondersteunt Javascript geen multiline variabelen?
pi_49319496
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
  zondag 13 mei 2007 @ 00:49:57 #257
12880 CraZaay
prettig gestoord
pi_49319966
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
  zondag 13 mei 2007 @ 13:21:52 #258
3677 SuperRembo
Sinds 1998
pi_49328186
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.
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
  zondag 13 mei 2007 @ 13:25:08 #259
3677 SuperRembo
Sinds 1998
pi_49328290
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.
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
pi_49328926
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?
  zondag 13 mei 2007 @ 14:09:23 #261
3677 SuperRembo
Sinds 1998
pi_49329543
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.
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
  maandag 14 mei 2007 @ 11:24:03 #262
12880 CraZaay
prettig gestoord
pi_49356790
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
pi_49464682
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 ]
The people who lost my respect will never get a capital letter for their name again.
Like trump...
  FOK!-Schrikkelbaas maandag 21 mei 2007 @ 21:31:16 #264
1972 Swetsenegger
Egocentrische Narcist
pi_49623574
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
pi_49623780
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.
"If you are depressed you shouldn't be in C major!" - Rick Beato
  FOK!-Schrikkelbaas maandag 21 mei 2007 @ 21:41:47 #266
1972 Swetsenegger
Egocentrische Narcist
pi_49624019
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.
pi_49624201
true is een keyword, dus niet tussen aanhalingstekens.
edit: oh.
pi_49624344
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?
"If you are depressed you shouldn't be in C major!" - Rick Beato
  FOK!-Schrikkelbaas maandag 21 mei 2007 @ 21:52:50 #269
1972 Swetsenegger
Egocentrische Narcist
pi_49624540
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.
pi_49624608
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 .
"If you are depressed you shouldn't be in C major!" - Rick Beato
  FOK!-Schrikkelbaas maandag 21 mei 2007 @ 22:02:39 #271
1972 Swetsenegger
Egocentrische Narcist
pi_49624964
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.
pi_49625023
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 *
"If you are depressed you shouldn't be in C major!" - Rick Beato
pi_49662368
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 ]
pi_49663192
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? :)
  dinsdag 22 mei 2007 @ 23:19:15 #275
3677 SuperRembo
Sinds 1998
pi_49668500
Eigenlijk gebeurt er alleen iets bij readystate 4, de andere readystates zijn niet zo boeiend.
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
pi_49669190
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
  dinsdag 22 mei 2007 @ 23:47:26 #277
3677 SuperRembo
Sinds 1998
pi_49669517
Hoe ziet httpResponse er uit?
Ik zou trouwens eerst de onreadystatechange zetten, en daarna pas de request versturen.
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
pi_49669681
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 = ...
pi_49669797
Met dank aan Google een ietwat ranzige oplossing:

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


Het werkt!
  dinsdag 22 mei 2007 @ 23:59:48 #280
3677 SuperRembo
Sinds 1998
pi_49669958
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);
}
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
pi_49670775
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.
pi_49726440
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.
  donderdag 24 mei 2007 @ 16:23:04 #283
12880 CraZaay
prettig gestoord
pi_49729680
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
pi_49900908
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?
-
pi_49902606
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 />
pi_49902836
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?
-
  dinsdag 29 mei 2007 @ 20:36:34 #287
3677 SuperRembo
Sinds 1998
pi_49902854
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>
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
  FOK!-Schrikkelbaas dinsdag 29 mei 2007 @ 20:40:07 #288
1972 Swetsenegger
Egocentrische Narcist
pi_49903015
bestaat er een javascript equivalent voor stristr?
  dinsdag 29 mei 2007 @ 20:47:14 #289
3677 SuperRembo
Sinds 1998
pi_49903302
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'))
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
  FOK!-Schrikkelbaas dinsdag 29 mei 2007 @ 21:02:52 #290
1972 Swetsenegger
Egocentrische Narcist
pi_49903923
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!
pi_49965686
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!
The people who lost my respect will never get a capital letter for their name again.
Like trump...
  donderdag 31 mei 2007 @ 15:43:10 #292
12880 CraZaay
prettig gestoord
pi_49967190
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?
pi_49967960
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 ]
The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_49970117
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.
pi_49974288
Waarom gebruik je niet gewoon XMLHttpRequest.responseXML?
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
pi_49976558
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.
pi_49977158
Het wiel opnieuw uitvinden? Een XML pagina opvragen en parsen stelt toch weinig voor?
pi_49977572
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..
The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_49978258
met *.childNodes *.parentChild *.nextSibling enzo.
pi_49978284
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...
pi_49978334
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!
The people who lost my respect will never get a capital letter for their name again.
Like trump...
abonnement Unibet Coolblue Bitvavo
Forum Opties
Forumhop:
Hop naar:
(afkorting, bv 'KLB')