FOK!forum / Digital Corner / [Javascript] voor dummies (deel 6)
CraZaaydonderdag 31 mei 2007 @ 22:18


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
[Javascript] voor dummies deel 5

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

Tutorials:
W3Schools Javascript
W3Schools AJAX


Deze OP: http://wiki.fok.nl/index.php/OP/Javascript

[ Bericht 16% gewijzigd door Godtje op 01-06-2007 19:31:41 ]
Chandlervrijdag 1 juni 2007 @ 10:25
Nou ik wordt er echt niet wijzer van, al dat werken met nodes, lengths etc..

Het enige wat ik wil is simpel iets uitlezen maar dat blijkt al verdomde moeilijk te zijn.

Ik heb nu de volgende functie geprobeerd, xmlDoc.getElementsByTagName('layouts') en dan zegt ie dat het een object is, maar nu weet ik niet welke values ik er uit kan halen. childNodes doet nix, length, value, count, etc?

Nu ben ik echt de weg kwijt

1
2
3
var x = xmlDoc.getElementsByTagName('gfxpoll');

alert(x);




Ook met selectNodes kom ik er niet...

1
2
3
var x = xmlDoc.selectNodes("//layouts"); 

alert(x.length);


alert == 0

[ Bericht 14% gewijzigd door Chandler op 01-06-2007 11:40:40 (anyone? :X) ]
SuperRembovrijdag 1 juni 2007 @ 10:45
Wat een waardeloze OP
SuperRembovrijdag 1 juni 2007 @ 12:05
Ik lees net dat de responseXML property in IE pas in versie 7 is toegevoegd. Ik denk dat het makkelijker is om in php de XML te lezen en om te zetten naar JSON en dat dan naar js sturen.
Chandlervrijdag 1 juni 2007 @ 13:02
Ik begrijp dus dat het niet mogelijk is om XML uit te lezen zonder responseXML te gebruiken in IE6 en FF?

-edit-
Ik heb dat JSON bekeken en zie dat dat eingelijk alleen voor PHP 5.0.2 is sjeez...

[ Bericht 47% gewijzigd door Chandler op 01-06-2007 13:44:07 ]
fokME2vrijdag 1 juni 2007 @ 14:44
quote:
Op vrijdag 1 juni 2007 10:45 schreef SuperRembo het volgende:
Wat een waardeloze OP
Ja.

http://wiki.fok.nl/index.php/OP/Javascript !! Daar! (overigens ook in voorgaande topics te vinden..)
SuperRembovrijdag 1 juni 2007 @ 16:07
quote:
Op vrijdag 1 juni 2007 13:02 schreef Chandler het volgende:
Ik begrijp dus dat het niet mogelijk is om XML uit te lezen zonder responseXML te gebruiken in IE6 en FF?

-edit-
Ik heb dat JSON bekeken en zie dat dat eingelijk alleen voor PHP 5.0.2 is sjeez...
Het kan (zeker in jouw geval) ook wel zonder JSON library.

Het enige wat je in PHP moet doen is

1
2
3
4
5
6
7
8
9
10
<gfxpoll>
    <action>layouts</action>
    <count>4</count>
    <layouts>
        <item>Default</item>
        <item>GFX</item>
        <item>Test</item>
        <item>Woei</item>
    </layouts>
</gfxpoll>

omzetten naar

1{action:'layouts', count:4, layouts:['Default','GFX','Test','Woei']}

en dan in JS:

1var data = eval("(" + request.responseText + ")");





(Wel even opletten met qoutjes in strings enzo)
Chandlervrijdag 1 juni 2007 @ 16:30
jeej... ik ga het eens inbouwen maar heb zelf gezocht op problemen met resposeXML in IE6.0 maar kon daar weinig tot niets over vinden (niet dat ik goed in zoeken ben maar goed).

Tnx Sr.
Litphovrijdag 1 juni 2007 @ 16:33
quote:
Op vrijdag 1 juni 2007 13:02 schreef Chandler het volgende:
Ik heb dat JSON bekeken en zie dat dat eingelijk alleen voor PHP 5.0.2 is sjeez...
Code for parsing and generating JSON (the latter is also known as "stringifying") is available for the following languages: ActionScript, C, C++, C#, ColdFusion, Common Lisp, Delphi/Object pascal, E, Erlang, Haskell, Java, JavaScript, Lasso (programming language), Limbo, Lua, ML, Objective-C, Objective CAML, Perl, PHP, Python, Rebol, Ruby, Smalltalk and Tcl.

Zie ook JSON.
Chandlervrijdag 1 juni 2007 @ 18:50
Klopt maar als je dan de library bekijkt zie je alleen een onderdeel voor php5.0.1 staan en ook een lb voor php 4.3.0 en hoger maar die schijnt weer extreem sloom te zijn vet leuk
CraZaayvrijdag 1 juni 2007 @ 19:20
quote:
Op vrijdag 1 juni 2007 14:44 schreef fokME2 het volgende:

[..]

Ja.

http://wiki.fok.nl/index.php/OP/Javascript !! Daar! (overigens ook in voorgaande topics te vinden..)
Good for you (en SuperRembo). En in welke sticky in DIG staat daar een link naartoe?

Veel plezier ermee
fokME2vrijdag 1 juni 2007 @ 19:24
quote:
Op vrijdag 1 juni 2007 19:20 schreef CraZaay het volgende:

[..]

Good for you (en SuperRembo). En in welke sticky in DIG staat daar een link naartoe?

Veel plezier ermee
Stond gewoon in de OP van het vorige deel hoor?

Maar zal wel even een modje roepen dan?
Litphovrijdag 1 juni 2007 @ 20:30
quote:
Op vrijdag 1 juni 2007 18:50 schreef Chandler het volgende:
Klopt maar als je dan de library bekijkt zie je alleen een onderdeel voor php5.0.1 staan en ook een lb voor php 4.3.0 en hoger maar die schijnt weer extreem sloom te zijn vet leuk
Waarom heb je daar een library voor nodig? . Zo complex is het ook weer niet.
splendorzaterdag 2 juni 2007 @ 12:35
Ik heb de volgende css code:
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
<style rel="text/css">
<!--
div.example {
   text-align: center;
   padding: 5px;
   background-color: #F4F3EE;
   
   font-family: Arial;
   font-size: 12px;
   color: #000000;
   font-weight: normal;
   font-style: normal;
   text-decoration: none;
}
a.example {
   font-family: Arial;
   font-size: 12px;
   color: #003366;
   font-weight: bold;
   font-style: italic;
   text-decoration: none;
}
a.example:hover {
   font-family: Arial;
   font-size: 12px;
   color: #003366;
   font-weight: bold;
   font-style: italic;
   text-decoration: underline;
}
-->
</style>


en de volgende javascript (in de head):
1
2
3
function changeSize(styleName,sizeValue) {
   document.getElementById(styleName).style.fontSize = sizeValue+'px';
}


en dan heb ik een listmenu met als attribuut:
1onchange="changeSize('example',this.value);"

En een div met id="example"

Wanneer ik dus bijvoorbeeld size 16 kies zal in de voorbeeld div metteen de tekst size 16 krijgen, werkt perfect.
Maar ik zou ook graag de link en de hover met javascript willen veranderen, hoe krijg ik dit voor elkaar?
Ik had al bedacht om gewoon een <a style="" te gebruiken maar in een style kun je geen hover apart aangeven, dus ik ben verplicht met javascript de a.example:hover aan te passen, maar hoe kom ik hierbij?

Iemand een idee?
Chandlerzaterdag 2 juni 2007 @ 16:58
example a:hover? example a?
CraZaayzaterdag 2 juni 2007 @ 17:19
In je link-definities (a, a:hover) geen grootte opnemen, die erven ze namelijk gewoon.
Chandlermaandag 4 juni 2007 @ 11:41
Klein vraagje.

Ik heb een array in javascript

arr[item[1]] = true
arr[item[3]] = true

Hoe kan ik deze items uitlezen? iig niet met een loop waarbij ik de positie probeer aan te spreken, zocht op een foreach maar kon daar ook niets over vinden.. anyone?
Litphomaandag 4 juni 2007 @ 11:56
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
   <script>
   var arr = new Array();
   var item = new Array();
   
   item[1] = 'x';
   item[3] = 'y';
   arr[item[1]] = 'p';
   arr[item[3]] = 'q';
   
   function test() {
      for( a in arr ) {
        alert( a + '-' + arr[a] );
      }
   }
   </script>
Kan je hier iets mee?
Chandlermaandag 4 juni 2007 @ 12:11
item[1] = leeg, dit is het ID van een TD

als ik nu selected (arr) .length doe krijg ik alsnog 0.

voorbeeld

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<tr id="item[1]" onmouseover="Mover(this, event, 1)" onmouseout="Mover(this, event, 0)"   onclick="Mover(this, event, -1)"  class="item">
    <td>Row 1</td>
    <td>Row 1</td>
    <td>Row 1</td>
    <td>Row 1</td>
    <td>Row 1</td>
</tr>
<tr id="item[2]" onmouseover="Mover(this, event, 1)" onmouseout="Mover(this, event, 0)"   onclick="Mover(this, event, -1)"  class="item">
    <td>Row 2</td>
    <td>Row 2</td>
    <td>Row 2</td>
    <td>Row 2</td>
    <td>Row 2</td>
</tr>


Nu sla ik deze ID van de item op om een item als geselecteerd te zetten.

1selected[id.id] = true


maar nu wil ik bv meerdere items uit selected halen, maar krijg ze niet op het scherm

1
2
3
4
5
6
7
8
9
10
function getSelected()
{
    var str = "";

    for (x in selected)
    {
        str += x + "=" + selected[x] + " -- ";
    }
    alert(selected.length);
}


Uitkomst: 0;

What am i doing wrong?
Litphomaandag 4 juni 2007 @ 12:30
Om de een of andere reden pakt hij length niet correct op. Aangezien je toch door alle elementen heen loopt met de for/in constructie is het eenvoudig genoeg om dat zelf te tellen als je wil, maar het zou wel handig zijn.

http://www.xs4all.nl/~litpho/chandlertest.html
Chandlermaandag 4 juni 2007 @ 13:10
Je hebt gelijk Litpho, best raar idd dat ie .length niet pakt...

Nu het volgende, iets anders

Voor het scriptje wil ik nu ook de rechtermuisknop gaan benutten. Echter als ik onmousedown gebruik en gewoon een linker klik doe wordt deze 2x gelezen (door onClick en onmousedown) hoe kan ik voorkomen dat de functie 2x aangeroepen wordt?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
13:17 4-6-2007<style>
.item {
    background-color: gray;
    color: black;
}

.item_hover {
    background-color: blue;
    color: yellow;
}

.item_hover {
    background-color: red;
    color: yellow;
}
</style>

<script language="javascript">
var selectedItems;
var selected = new Array();

function Mover(id, event, inout)
{
    // catch mouse buttons
    var mouseButton = false;

    if (event.which == null)
    {
       /* IE case */
       mouseButton = (event.button < 2) ? "left" : ((event.button == 4) ? "middle" :"right");
    }
    else
    {
       /* All others */
       mouseButton = (event.which < 2) ? "left" : ((event.which == 2) ? "middle" : "right");
    }

    // mouseaction?
    if (mouseButton != false && inout == -1)
    {
        tStats("mousebutton found");

        if (mouseButton == "left")
        {
            tStats("left mousebutton");
            // select or deselect item
            if (selected[id.id])
            {
                // verwijder selected[id];
                delete selected[id.id];
            }
            else
            {
                selected[id.id] = id.id
            }
        }
        else
        {
            // menu
            alert("menu on item " + id.id);
        }

        dont(event);
            
    }

    if (inout == 0)
    {
        if (!selected[id.id])
        { 
            id.className = "item";  
        }
        else
        {
            id.className = "item_selected";
        }
    }
    else if (inout == -1)
    {
        tStats("-1");
    }
    else
    {
        id.className = "item_hover";
    }
    mouseButton = false;

}

function dont(event)
{
    if (event.preventDefault)
        event.preventDefault();
    else
        event.returnValue= false;
     return false;
}

function tStats(x)
{
    y = document.getElementById('stats');

    z = x +  '<br />'  + y.innerHTML;
    y.innerHTML = z;
}

function getSelected()
{
    var str = "";
    var cnt = 0;

    for (x in selected)
    {
        str += "Selected option: " + selected[x] + " -- n";
        cnt++;
    }
    alert(cnt + "n" + str);
}
    
</script>

<table>
<tr>
    <th>Cell 1</th>
    <th>Cell 2</th>
    <th>Cell 3</th>
    <th>Cell 4</th>
    <th>Cell 5</th>
</tr>
<tr id="item[1]" onmouseover="Mover(this, event, 1)" onmousedown="Mover(this,event,-1)" onmouseout="Mover(this, event, 0)" onclick="Mover(this, event, -1)" ondblclick="Mover(this, event, -1)" oncontextmenu="Mover(this, event, -1)" class="item">
    <td>Row 1</td>
    <td>Row 1</td>
    <td>Row 1</td>
    <td>Row 1</td>
    <td>Row 1</td>
</tr>
<tr id="item[2]" onmouseover="Mover(this, event, 1)" onmousedown="Mover(this,event,-1)" onmouseout="Mover(this, event, 0)" onclick="Mover(this, event, -1)" ondblclick="Mover(this, event, -1)" oncontextmenu="Mover(this, event, -1)" class="item">
    <td>Row 2</td>
    <td>Row 2</td>
    <td>Row 2</td>
    <td>Row 2</td>
    <td>Row 2</td>
</tr>
<tr id="item[3]" onmouseover="Mover(this, event, 1)" onmousedown="Mover(this,event,-1)" onmouseout="Mover(this, event, 0)" onclick="Mover(this, event, -1)" ondblclick="Mover(this, event, -1)" oncontextmenu="Mover(this, event, -1)" class="item">
    <td>Row 3</td>
    <td>Row 3</td>
    <td>Row 3</td>
    <td>Row 3</td>
    <td>Row 3</td>
</tr>
<tr id="item[4]" onmouseover="Mover(this, event, 1)" onmousedown="Mover(this,event,-1)" onmouseout="Mover(this, event, 0)" onclick="Mover(this, event, -1)" ondblclick="Mover(this, event, -1)" oncontextmenu="Mover(this, event, -1)" class="item">
    <td>Row 4</td>
    <td>Row 4</td>
    <td>Row 4</td>
    <td>Row 4</td>
    <td>Row 4</td>
</tr>
<tr id="item[5]" onmouseover="Mover(this, event, 1)" onmousedown="Mover(this,event,-1)" onmouseout="Mover(this, event, 0)" onclick="Mover(this, event, -1)" ondblclick="Mover(this, event, -1)" oncontextmenu="Mover(this, event, -1)" class="item">
    <td>Row 5</td>
    <td>Row 5</td>
    <td>Row 5</td>
    <td>Row 5</td>
    <td>Row 5</td>
</tr>
<tr id="item[6]" onmouseover="Mover(this, event, 1)" onmousedown="Mover(this,event,-1)" onmouseout="Mover(this, event, 0)" onclick="Mover(this, event, -1)" ondblclick="Mover(this, event, -1)" oncontextmenu="Mover(this, event, -1)" class="item">
    <td>Row 6</td>
    <td>Row 6</td>
    <td>Row 6</td>
    <td>Row 6</td>
    <td>Row 6</td>
</tr>
<tr id="item[7]" onmouseover="Mover(this, event, 1)" onmousedown="Mover(this,event,-1)" onmouseout="Mover(this, event, 0)" onclick="Mover(this, event, -1)" ondblclick="Mover(this, event, -1)" oncontextmenu="Mover(this, event, -1)" class="item">
    <td>Row 7</td>
    <td>Row 7</td>
    <td>Row 7</td>
    <td>Row 7</td>
    <td>Row 7</td>
</tr>
<tr id="item[8]" onmouseover="Mover(this, event, 1)" onmousedown="Mover(this,event,-1)" onmouseout="Mover(this, event, 0)" onclick="Mover(this, event, -1)" ondblclick="Mover(this, event, -1)" oncontextmenu="Mover(this, event, -1)" class="item">
    <td>Row 8</td>
    <td>Row 8</td>
    <td>Row 8</td>
    <td>Row 8</td>
    <td>Row 8</td>
</tr>
</table>

<input type="button" onClick="getSelected()" value="Selected items"> <input type="button" onClick="document.getElementById('stats').innerHTML = ''" value="Clear pre">

<pre id="stats" name="stats"  style="width: 400px; height: 250px; overflow: auto;">Hello</pre>


als ik nu onmousedown verwijder werkt de rechtermuisknop niet. Heeft iemand een suggestie?

[ Bericht 99% gewijzigd door Chandler op 04-06-2007 13:19:41 ]
Chandlerdonderdag 7 juni 2007 @ 15:56
Kleine andere vraag.

Stel ik heb een element een andere className gegeven (this.className = 'nieuweclass') hoe kan ik deze nieuwe class dan resetten? oftewel de oude class terug halen? zonder een andere class te gebruiken?
Litphodonderdag 7 juni 2007 @ 16:01
quote:
Op donderdag 7 juni 2007 15:56 schreef Chandler het volgende:
Kleine andere vraag.

Stel ik heb een element een andere className gegeven (this.className = 'nieuweclass') hoe kan ik deze nieuwe class dan resetten? oftewel de oude class terug halen? zonder een andere class te gebruiken?
Tussendoor ergens in een variabele opslaan of de pagina herladen.
Chandlerdonderdag 7 juni 2007 @ 16:07
Je moet het zien als.

Ik heb een TD daar staat een standaard class op

td { font-size: 100px }

nu heb ik ook een class

td .small { font-size: 12px; }

als ik nu met een onmouseover="this.className='small'" zet wil ik met onmouseout de class resetten naar de huidige class (td). How do i do this?
Litphodonderdag 7 juni 2007 @ 16:08
quote:
Op donderdag 7 juni 2007 16:07 schreef Chandler het volgende:
Je moet het zien als.

Ik heb een TD daar staat een standaard class op

td { font-size: 100px }

nu heb ik ook een class

td .small { font-size: 12px; }

als ik nu met een onmouseover="this.className='small'" zet wil ik met onmouseout de class resetten naar de huidige class (td). How do i do this?
De huidige class is niet td, de huidige class is leeg met element td. Dus als je className leeg maakt, dan gebruikt hij de 100px rule weer, dat is dan de meest passende.
Chandlerdonderdag 7 juni 2007 @ 16:11
ok, i'll try.

En het werkte gewoon dus heerlijk this.className = '' (reset)

[ Bericht 87% gewijzigd door Chandler op 07-06-2007 16:25:19 ]
Geqxonzondag 10 juni 2007 @ 22:57
Mijn pagina heeft een lege img, die ik om de zeven seconden met de volgende truuk vul:

1scrollerimage.src = images[number];


...waarbij images[number] een relatief URL bevat. De eerste keer dat ik dit aanroep gaat het prima, het plaatje laad, met het juiste formaat. Als ik voor de tweede keer het plaatje laad, gaat dit ook goed, echter neemt hij het formaat van het eerste plaatje aan.

Ik heb zitten te klooien met een compleet leegmaken van het image, de width en height null te geven, en desnoods een nieuwe Image-object aan te maken. Allemaal gefaalde oplossingen, dus ik vroeg mij af of iemand tips voor mij heeft?

En nee, de div waar het plaatje in zit leegmaken en via innerHTML weer vullen met "<img id="scrollerimage">" vind ik ietwat ranzig :P
CraZaaymaandag 11 juni 2007 @ 09:13
Dat laatste is inderdaad ranzig, goed dat je dat niet ziet zitten

Ik weet eigenlijk niet of dit standaard browsergedrag is. Heb je er last van in meerdere browsers? Wat sowieso zou moeten werken is het expliciet zetten van de width en height d.m.v. CSS, maar je zou denken dat het gewoon zou moeten werken op de door jou genoemde manier.

Zal vanavond eens een testcase maken
Geqxonmaandag 11 juni 2007 @ 09:19
Ik moet bekennen dat ik het enkel in Safari getest heb, maar ook als het in Firefox wel zou werken, ik ga liever geen grote doelgroep afsnijden.

De width en height instellen gaat tricky worden, aangezien elk plaatje een andere grote heeft, en ik geen flauw idee heb hoe groot of klein het plaatje is.

Hier heb ik een testcase gemaakt, en daar werkt wel alles naar toebehoren. Zeer vreemd gedrag
CraZaaymaandag 11 juni 2007 @ 14:07
Werkt iig naar behoren in Firefox op de PC en Mac, IE7 en Safari. In de site waar het mis gaat is er geen CSS style die de afmetingen aanpast ofzo?
Geqxonmaandag 11 juni 2007 @ 14:19
Dan schuif ik de fout toch naar mijn eigen website. Op het moment kan ik er niet aan werken, maar ik hou je deze avond op de hoogte
Geqxondinsdag 12 juni 2007 @ 20:45
quote:
Op maandag 11 juni 2007 14:19 schreef Geqxon het volgende:
Dan schuif ik de fout toch naar mijn eigen website. Op het moment kan ik er niet aan werken, maar ik hou je deze avond op de hoogte
Iets later. Vreemd, alles werkt weer. Maar dit snap ik dan weer niet:

En dat snap ik weer niet....

[ Bericht 43% gewijzigd door Geqxon op 12-06-2007 20:54:18 ]
Chandlerwoensdag 20 juni 2007 @ 09:27
Ik heb voor het eerst zelf een tabel in javascript kunnen gereneren! _O_

maar nu zit ik met een probleem. Ik wil eingelijk ook een tbody, tfoot en thead toevoegen.. echter krijg ik het niet voor elkaar..

Het huidige werkende script

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<div id="test">
<!-- tabel //-->
</div>

<script language="javascript">

function addCell(tableRow, pos, text, width)
{
    var tableCell             = tableRow.insertCell(pos);
        tableCell.innerHTML   = text ;
        tableCell.style.width = width;
    
}

table = document.createElement("Table");

for (x = 0; x < 10; x++)
{
    var tableRow = table.insertRow(x);

    addCell(tableRow, 0, x + "&1", "100px");
    addCell(tableRow, 1, x + "&2", "200px");
    addCell(tableRow, 2, x + "&3", "50px");
    addCell(tableRow, 3, x + "&4", "200px");

/*
    for (y = 0; y < 5; y++)
    {
        var tableCell = tableRow.insertCell(y);
            tableCell.innerHTML = x +'hello'+y ;

    }
*/
}

document.getElementById('test').appendChild(table);
alert('klik hier en de tabel verdwijnt!');
document.getElementById('test').innerHTML = '';

</script>


Wie weet hoe ik een element kan toevoegen? want table.createElement("Tbody"); werkt niet en zie / kon geen andere oplossing vinden...
Litphowoensdag 20 juni 2007 @ 09:57
table.createTFoot() en table.createTHead()

en uiteraard
var tbody = document.createElement("tbody");
table.appendChild(tbody);
Chandlerwoensdag 20 juni 2007 @ 10:28
Ik heb je code even overgenomen, maar krijg een thead niet voor elkaar... tbody is trouwens gelukt!

1
2
3
4
var thead = table.createTHead();
var theadRow  = thead.insertRow(0);
var theadHeader = thead.createElement("th");
    theadHeader.innerHTML = 'Header';


Bovenstaande code werkt niet. Ook insertCell geeft een fout. Wil gewoon een TH toevoegen aan de thead en daarin een stuk tekst plaatsen

volgende code werkt!
1
2
var tbody = document.createElement("tbody");
table.appendChild(tbody);


Tevens zou ik graag weten hoe ik een ID waarde kan plaatsen aan een TR of TD oid...

[ Bericht 8% gewijzigd door Chandler op 20-06-2007 11:10:40 ]
Litphowoensdag 20 juni 2007 @ 10:33
quote:
Op woensdag 20 juni 2007 10:28 schreef Chandler het volgende:
Ik heb je code even overgenomen, maar krijg een thead niet voor elkaar... tbody is trouwens gelukt!
[ code verwijderd ]

Bovenstaande code werkt niet. Ook insertCell geeft een fout. Wil gewoon een TH toevoegen aan de thead en daarin een stuk tekst plaatsen
1
2
3
4
5
var thead = table.createTHead();
var theadRow  = thead.insertRow(0);
var theadHeader = document.createElement("th");
    theadHeader.innerHTML = 'Header';
   theadRow.appendChild(theadHeader);

createElement is geen methode van HTMLTableRowElement en HTMLTableRowElement.insertCell levert alleen <TD> elementen op .
Chandlerwoensdag 20 juni 2007 @ 13:02
Inderdaad Litpho, klopt helemaal. Had het net ook even doorgelezen

Nu even iets anders, iets waar denk ik wel meerdere gebruikers mee zouden kunnen zitten.

Ik heb dus een scriptje met een tabel, deze tabel heeft een mouseover en een onclick om een row te selecteren, echter wil ik met een double click deze regel bewerken.

Nu is het probleem dat doubleclick niet functioneerd omdat eerst de onclick aangeroepen wordt.

Is er een manier om doubleclick en de enkele click af te vangen, zodat je tijd hebt om een dubbele klik te doen ipv gelijk de onclick aan te roepen? als je begrijpt wat ik bedoel!?
SuperRembowoensdag 20 juni 2007 @ 13:19
Quirksmode.org:
quote:
The dblclick event is rarely used. Even when you use it, you should be sure never to register both an onclick and an ondblclick event handler on the same HTML element. Finding out what the user has actually done is nearly impossible if you register both.
Ik zou een andere oplossing zoeken. Een edit knopje is toch ook veel duidelijker?
Chandlerwoensdag 20 juni 2007 @ 13:20
Klopt.

Dan ga ik maar linker en rechtermuisknop misbruiken

Tevens kom ik iets merkwaardigs tegen in IE 6.

1
2
3
4
        tableRow.oncontextmenu = eval("function() { alert('menu for: ' + this.id);  }");
        tableRow.onclick       = eval("function() { alert('select'); }");
        tableRow.onmouseover   = eval("function() { this.className='item_hover'; }");
        tableRow.onmouseout    = eval("function() { this.className=''; }");


dit werkt perfect in Firefox maar niet in IE?! en ijk snap niet waarom!

[ Bericht 40% gewijzigd door Chandler op 20-06-2007 13:31:57 ]
super-muffinwoensdag 20 juni 2007 @ 17:30
1
2
3
span = document.createElement('span');
span_text = document.createTextNode(' & gt;& gt; ' + title);
span.appendChild(span_text);

Waarom krijg ik dan ook letterlijk '& gt;' te zien en geen >?

(ik heb er even '& gt;' van gemaakt met spatie, anders maakt Fok! er > van )
RM-rfwoensdag 20 juni 2007 @ 17:36
createtextNode creeert een textnode en die kan geen HTMLcode bevatten maar enkel normale text ...

om die grond wordt dat stukje Text ook geparsed naar de HTML-code '&amp;gt;'
super-muffinwoensdag 20 juni 2007 @ 18:57
Aha, gewoon >> neer zetten dus
(Had ik zelf ook kunnen zien door de generated source te bekijken btw.)
SuperRembowoensdag 20 juni 2007 @ 19:15
quote:
Op woensdag 20 juni 2007 17:36 schreef RM-rf het volgende:
createTextNode creeert een textnode
He, wat zitten die rot-browsers toch onlogisch in elkaar
super-muffinwoensdag 20 juni 2007 @ 19:46
Inderdaad, dat stuk snapte ik ook niet echt.
Chandlerwoensdag 20 juni 2007 @ 22:32
Snapt iemand waarom ik geen EVAL kan gebruiken in IE in de vorige post van mij? ik heb gezocht maar kan het echt niet vinden in FireFox werkt het gewoon.

IE meld trouwens dat het niet geimplementeerd is oid..
Geqxondonderdag 21 juni 2007 @ 01:03
Is een setTimeOut niet wat voor je? Kan basicly hetzelfde als je de timer op 0 zet...
Chandlerdonderdag 21 juni 2007 @ 08:41
ik ben er zelf achtergekomen! komt omdat me vrienden hier niet reageren

ik had helemaal geen eval nodig, een functie kun je dus gewoon plaatsen aan een onclick ed zonder eval!

Tnx Geqxon voor je antwoorden
Geqxondonderdag 21 juni 2007 @ 10:57
Dat kan inderdaad ook
Chandlerdonderdag 21 juni 2007 @ 11:59
Wil iemand wat voor mij checken, want als scripter kijk je vaak over foutjes heen.

Omschrijving
CHMOD Calculator die ook in te stellen is met CHMOD code zelf (666 etc)

Waarom gemaakt?
omdat veel online versies niet directe input ondersteunden, oftewel invoer van 555, 666, 777 ipv checken van checkboxjes

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
<table>
<tr>
    <td colspan=5>Rechten caculator gemaakt door Eric!</td>
</tr>
<tr>
    <td>Rechten</td>
    <td>Eigenaar</td>
    <td>Groep</td>
    <td>Anders</td>
    <td> </td>
</tr>
<tr>
    <td>Lezen</td>
    <td><input type="checkbox" id="owner_read" onClick="calculate(this, 4);"></td>
    <td><input type="checkbox" id="group_read" onClick="calculate(this, 4);"></td>
    <td><input type="checkbox" id="other_read" onClick="calculate(this, 4);"></td>
    <td> </td>
</tr>
<tr>
    <td>Schrijven</td>
    <td><input type="checkbox" id="owner_write" onClick="calculate(this, 2);"></td>
    <td><input type="checkbox" id="group_write" onClick="calculate(this, 2);"></td>
    <td><input type="checkbox" id="other_write" onClick="calculate(this, 2);"></td>
    <td> </td>
</tr>
<tr>
    <td>Uitvoeren</td>
    <td><input type="checkbox" id="owner_exec" onClick="calculate(this, 1);"></td>
    <td><input type="checkbox" id="group_exec" onClick="calculate(this, 1);"></td>
    <td><input type="checkbox" id="other_exec" onClick="calculate(this, 1);"></td>
    <td> </td>
</tr>
<tr>
    <td>Nummeriek</td>
    <td><input type="text" id="num_owner_total" style="width: 15px;" disabled></td>
    <td><input type="text" id="num_group_total" style="width: 15px;" disabled></td>
    <td><input type="text" id="num_other_total" style="width: 15px;" disabled></td>
    <td>= <input type="text" name="chmod_oct" id="chmod_oct" style="width: 75px;" onKeyUp="setRights(this.value);"></td>
</tr>
<tr>
    <td>Symbolisch</td>
    <td><input type="text" id="sym_owner_total" style="width: 35px;" disabled></td>
    <td><input type="text" id="sym_group_total" style="width: 35px;" disabled></td>
    <td><input type="text" id="sym_other_total" style="width: 35px;" disabled></td>
    <td>= <input type="text" name="chmod_sym" id="chmod_sym" style="width: 75px;" disabled></td>
</tr>
</table>

<script language="javascript">
var owner = 0;
var group = 0;
var other = 0;

function calculate(id, num)
{
    var opt = document.getElementById(id.id);

    if (opt.checked == true)
    {
        switch (opt.id.substr(0, 5))
        {
            case "owner":
                owner = owner + num;
            break;

            case "group":
                group = group + num;
            break;

            case "other":
                other = other + num;
            break;
        }
    }
    else
    {
        switch (opt.id.substr(0, 5))
        {
            case "owner":
                owner = owner - num;
            break;

            case "group":
                group = group - num;
            break;

            case "other":
                other = other - num;
            break;
        }
    }

    displayNumbers(owner, group, other);

}
function setRights(inn)
{
    if (parseFloat(inn.substr(0, 1)) > 7 || parseFloat(inn.substr(1, 1)) > 7 || parseFloat(inn.substr(2, 1)) > 7 )
    {
         alert("Alle nummers moeten 7 of lager zijn!");
    }
    else if (inn.length > 3)
    {
         alert("Het nummer mag niet meer dan 3 cijfers bevatten");
    }

    if (inn.substr(0, 1)) { owner = parseFloat(inn.substr(0, 1)); } else { owner = 0; }
    if (inn.substr(1, 1)) { group = parseFloat(inn.substr(1, 1)); } else { group = 0; }
    if (inn.substr(2, 1)) { other = parseFloat(inn.substr(2, 1)); } else { other = 0; }

    
    if (owner & 4) { document.getElementById('owner_read').checked  = true; } else { document.getElementById('owner_read').checked  = false; }
    if (owner & 2) { document.getElementById('owner_write').checked = true; } else { document.getElementById('owner_write').checked = false; }
    if (owner & 1) { document.getElementById('owner_exec').checked  = true; } else { document.getElementById('owner_exec').checked  = false; }

    if (group & 4) { document.getElementById('group_read').checked  = true; } else { document.getElementById('group_read').checked  = false; }
    if (group & 2) { document.getElementById('group_write').checked = true; } else { document.getElementById('group_write').checked = false; }
    if (group & 1) { document.getElementById('group_exec').checked  = true; } else { document.getElementById('group_exec').checked  = false; }

    if (other & 4) { document.getElementById('other_read').checked  = true; } else { document.getElementById('other_read').checked  = false; }
    if (other & 2) { document.getElementById('other_write').checked = true; } else { document.getElementById('other_write').checked = false; }
    if (other & 1) { document.getElementById('other_exec').checked  = true; } else { document.getElementById('other_exec').checked  = false; }

    displayNumbers(owner, group, other);

}

function displayNumbers(owner, group, other)
{
    // nummeric
    document.getElementById('chmod_oct').value = owner + "" + (group > 0 ? group : "") + "" + (other > 0 ? other : "");

    document.getElementById('num_owner_total').value = owner;
    document.getElementById('num_group_total').value = group;
    document.getElementById('num_other_total').value = other;

    // symbolic
    
    document.getElementById('sym_owner_total').value = convertToSym(owner);
    document.getElementById('sym_group_total').value = convertToSym(group);
    document.getElementById('sym_other_total').value = convertToSym(other);

    document.getElementById("chmod_sym").value = "-" + convertToSym(owner) + convertToSym(group) + convertToSym(other); 

}

function convertToSym(num)
{
    var out = "";

    if (num & 4) { out += "r"; } else { out += "-"; }
    if (num & 2) { out += "w"; } else { out += "-"; }
    if (num & 1) { out += "x"; } else { out += "-"; }

    return out;
}

setRights('666');
</script>
         


misschien kan het korter, dat zou ik graag willen horen!

-edit- kleine bug verholpen.

[ Bericht 3% gewijzigd door Chandler op 21-06-2007 12:06:17 ]
CraZaaydonderdag 21 juni 2007 @ 12:42
Eenmalig document.getElementById doen voor al die elementen, en dan de referenties hiernaar in een variabele buiten de functie opslaan (en die vervolgens gebruiken). Beetje onnodige belasting om de browser iedere keer de DOM te laten doorzoeken naar hetzelfde element, terwijl 1 keer genoeg is
Geqxondonderdag 21 juni 2007 @ 13:09
1
2
3
4
5
6
7
8
9
10
11
    if (owner & 4) { document.getElementById('owner_read').checked  = true; } else { document.getElementById('owner_read').checked  = false; }
    if (owner & 2) { document.getElementById('owner_write').checked = true; } else { document.getElementById('owner_write').checked = false; }
    if (owner & 1) { document.getElementById('owner_exec').checked  = true; } else { document.getElementById('owner_exec').checked  = false; }

    if (group & 4) { document.getElementById('group_read').checked  = true; } else { document.getElementById('group_read').checked  = false; }
    if (group & 2) { document.getElementById('group_write').checked = true; } else { document.getElementById('group_write').checked = false; }
    if (group & 1) { document.getElementById('group_exec').checked  = true; } else { document.getElementById('group_exec').checked  = false; }

    if (other & 4) { document.getElementById('other_read').checked  = true; } else { document.getElementById('other_read').checked  = false; }
    if (other & 2) { document.getElementById('other_write').checked = true; } else { document.getElementById('other_write').checked = false; }
    if (other & 1) { document.getElementById('other_exec').checked  = true; } else { document.getElementById('other_exec').checked  = false; }


Dit in een functie proppen? De 4 - 2 - 1 stap kan eventueel in een for-lusje

1
2
3
4
5
6
7
8
9
10
11
12
13
var objectToCheck = array(5);

checkboxName = "group"
objectToCheck[4] = document.getElementById(checkboxName+'_read').checked;
objectToCheck[2] = document.getElementById(checkboxName+'_write').checked;
objectToCheck[1] = document.getElementById(checkboxName+'_exec').checked;


for (var i = 4; i >= 1; i = i / 2){

    if (right & i) { objectToCheck[i] = true; } else { objectToCheck[i] = false; }

}


[ Bericht 5% gewijzigd door Geqxon op 21-06-2007 13:18:15 ]
Geqxondonderdag 21 juni 2007 @ 13:29
Uitgewerkt:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
   var types = new Array();
   types[0] = "owner";
   types[1] = "group";
   types[2] = "other";

   var userset = new Array();
   userset[0] = 5;
   userset[1] = 7;
   userset[2] = 1;

   var rights = new Array();
   rights[4] = "read";
   rights[2] = "write";
   rights[1] = "exec";

   for (var i = 0; i <= 2; i++){
      for (var j = 4; j >= 1; j = j / 2){
          if (userset[i] & j)
             document.getElementById(types[i]+'_'+rights[j]).checked  = true;
          else
             document.getElementById(types[i]+'_'+rights[j]).checked  = false;
      }
   }


Verder lijkt dit mij mooier voor de checkboxen:

1
2
3
4
5
6
<input type="checkbox" id="other_read" value="4" onClick="calculate(this)">

function calculate(checkbox)
{
    var opt = checkbox.id;
    var num = checkbox.value;


Puur uit netheid

Last but not least een ranzige methode om calculate te verkleinen:

1
2
3
4
5
6
7
8
9
10
   var owner = 7;

   var checkboxChecked = false
   var checkboxValue = 4;
   var checkboxName = "owner";
   var charToUse = (checkboxChecked ? true : "+") + (checkboxChecked ? false : "-");

   eval(checkboxName + " = " + checkboxName + " " + charToUse + " " + checkboxValue);

   alert(owner);


Geeft in dit geval dus drie. Maar ranzig

[ Bericht 12% gewijzigd door Geqxon op 21-06-2007 13:56:01 ]
Chandlerdonderdag 21 juni 2007 @ 14:06
Tnx, ik ga me hier eens over buigen, maar op zich waren de functies die ik geschreven had aardig goed dus en dat voor een JS leek
Geqxondonderdag 21 juni 2007 @ 14:18
quote:
Op donderdag 21 juni 2007 14:06 schreef Chandler het volgende:
Tnx, ik ga me hier eens over buigen, maar op zich waren de functies die ik geschreven had aardig goed dus en dat voor een JS leek
Jep, die waren prima. Maar hey, jij vraagt om korter, dan krijg je korter
Chandlerdonderdag 21 juni 2007 @ 15:25
je hebt gelijk... heb nog een hoop te javascripten.. het is maar onderdeel van
SuperRembodonderdag 21 juni 2007 @ 16:06
Dit kan natuurlijk veel korter

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
var types = new Array();
types[0] = "owner";
types[1] = "group";
types[2] = "other";

var userset = new Array();
userset[0] = 5;
userset[1] = 7;
userset[2] = 1;

var rights = new Array();
rights[4] = "read";
rights[2] = "write";
rights[1] = "exec";

for (var i = 0; i <= 2; i++){
   for (var j = 4; j >= 1; j = j / 2){
       if (userset[i] & j)
          document.getElementById(types[i]+'_'+rights[j]).checked  = true;
       else
          document.getElementById(types[i]+'_'+rights[j]).checked  = false;
   }
}


Voor het stukje met

1if (boolValue) { someVar = true; } else { someVar = false; };

is er omslachtig


1
2
3
4
5
6
7
8
9
10
11
var types = ["owner", "group", "other"];
var userset = [5 , 7, 1];
var rights = ["read", "write", "exec"];

for (var i = 0; i < 3; ++i)
{
   for (var j = 4; j >= 1; j /= 2)
   {
      document.getElementById(types[i] + '_' + rights[j]).checked = (userset[i] & j);
   }
}   


:P
Geqxondonderdag 21 juni 2007 @ 16:16
Baas boven baas, verschil moet er zijn

En de "checked = (userset[i] & j)" is een hele scherpe, voor mij een gemiste kans
CraZaaydonderdag 21 juni 2007 @ 17:17
SuperRembo: ik neem aan dat 'ie voor 'rights' niet voor niets 4, 2 en 1 als keys gebruikt heeft ipv 0, 1 en 2. Of mis ik iets?
Geqxondonderdag 21 juni 2007 @ 17:24
quote:
Op donderdag 21 juni 2007 17:17 schreef CraZaay het volgende:
SuperRembo: ik neem aan dat 'ie voor 'rights' niet voor niets 4, 2 en 1 als keys gebruikt heeft ipv 0, 1 en 2. Of mis ik iets?
Jep, zo moet er bij een "read" worden geprobeerd er vier punten af te halen. Dat is anders te doen, uiteraard, maar dit leek mij voor het overzicht wel handig
SuperRembodonderdag 21 juni 2007 @ 20:06
quote:
Op donderdag 21 juni 2007 17:17 schreef CraZaay het volgende:
SuperRembo: ik neem aan dat 'ie voor 'rights' niet voor niets 4, 2 en 1 als keys gebruikt heeft ipv 0, 1 en 2. Of mis ik iets?
Je hebt gelijk, daar heb ik overheen gekeken.
wipes66donderdag 21 juni 2007 @ 20:15
Voor de mensen die graag op een makkelijk manier ronde hoeken willen maken:
http://code.google.com/p/jquery-roundcorners-canvas/
PiRANiAdonderdag 21 juni 2007 @ 20:29
stiekem plaats ik hier een tvp
CraZaaydonderdag 21 juni 2007 @ 21:28
quote:
Op donderdag 21 juni 2007 20:15 schreef wipes66 het volgende:
Voor de mensen die graag op een makkelijk manier ronde hoeken willen maken:
http://code.google.com/p/jquery-roundcorners-canvas/
Bah

Javascript is wat mij betreft voor gedrag en niet voor styling. Daar is CSS voor.
wipes66donderdag 21 juni 2007 @ 23:20
quote:
Op donderdag 21 juni 2007 21:28 schreef CraZaay het volgende:

[..]

Bah

Javascript is wat mij betreft voor gedrag en niet voor styling. Daar is CSS voor.
Sommige dingen gaan nou eenmaal niet met CSS.
CraZaayvrijdag 22 juni 2007 @ 00:02
quote:
Op donderdag 21 juni 2007 23:20 schreef wipes66 het volgende:

[..]

Sommige dingen gaan nou eenmaal niet met CSS.
Tuurlijk wel. jQuery schrijft ook gewoon dynamisch HTML en CSS.
PiRANiAvrijdag 22 juni 2007 @ 19:40
help?

ik wil dat in een <input> de enter toets neit gebruikt wordt om te submitten, maar om een functie uit te voeren.
Hoe moet dat?

zoiets dus: ipuur ter illustratie:

1
2
3
<form>
<input onKeyUp="if(key= enter { submitajax(this.value) ; } "> 
</form>
CraZaayvrijdag 22 juni 2007 @ 19:59
Niets aan die input doen maar een onsubmit op je form. Daarin de gewenste functie uitvoeren en een 'return false' om de normale submit tegen te houden.

En natuurlijk de normale submit ook laten werken voor de mensen die javascript uit hebben staan
PiRANiAvrijdag 22 juni 2007 @ 20:20
quote:
Op vrijdag 22 juni 2007 19:59 schreef CraZaay het volgende:
Niets aan die input doen maar een onsubmit op je form. Daarin de gewenste functie uitvoeren en een 'return false' om de normale submit tegen te houden.

En natuurlijk de normale submit ook laten werken voor de mensen die javascript uit hebben staan
gaan we proberen
Geqxonzondag 24 juni 2007 @ 20:43
Ik ben zo eens op zoek naar een toffe Javascript reverse-engineer debugger achtig programma. Dus zodat ik exact kan zien wat er gebeurd als ik op een pagina op een knopje klik. Iemand tips?
SuperRembozondag 24 juni 2007 @ 22:54
In FireBug zit een debugger en nog een heleboel handige dev tools. Verder heb je voor Firefox nog Venkman, maar die vind ik zelf niet zo lekker werken. Voor IE heb je natuurlijk de debugger van de Microsoft Script Editor, of anders Visual Studio.
Chandlerwoensdag 27 juni 2007 @ 20:40
Vraagje; ik heb een selectbox met een stel opties. Waarvan 90% een value hebben en 10% niet. Nu wil ik dat alleen die opties met een value geselecteerd kunnen worden maar niet de opties zonder 'value'.

Hoe kan ik dit realiseren?

if (this.option[this.selectedIndex].value='') return false;

werkt helaas niet
Geqxonwoensdag 27 juni 2007 @ 20:52
quote:
Op woensdag 27 juni 2007 20:40 schreef Chandler het volgende:
Vraagje; ik heb een selectbox met een stel opties. Waarvan 90% een value hebben en 10% niet. Nu wil ik dat alleen die opties met een value geselecteerd kunnen worden maar niet de opties zonder 'value'.

Hoe kan ik dit realiseren?

if (this.option[this.selectedIndex].value='') return false;

werkt helaas niet :{
1
2
3
if (item.value){
alert('This item has a value');
}


Werkt dit niet?
Chandlerdonderdag 28 juni 2007 @ 14:58
Dat werkt wel in IE maar weer niet in FireFox.

Wil eingelijk gewoon als ze op een 'optie' zonder value klikken dat de 'selectie' gewoon blijft staan op de 'vorige' optie met wel een value...

oid..
Litphodonderdag 28 juni 2007 @ 15:02
Tijdelijke variabele om de selectedIndex in op te slaan waar de selectedIndex naar wordt teruggezet als het gegeven item geen value heeft?
Chandlerdonderdag 28 juni 2007 @ 15:05
K! ik ga het proberen!
CraZaaydonderdag 28 juni 2007 @ 15:06
Wat is het doel Chandler? Ben je niet goed af met <optgroup> toevallig?
Litphodonderdag 28 juni 2007 @ 15:08
quote:
Op donderdag 28 juni 2007 15:06 schreef CraZaay het volgende:
Wat is het doel Chandler? Ben je niet goed af met <optgroup> toevallig?
Goed punt.
Chandlerdonderdag 28 juni 2007 @ 15:22
<optgroup>?

Nog nooit van gehoord, ga gelijk googlen!

-edit-

Gevonden en nu al ingebouwd cq gebruikt!.

Wat een handig element zeg!. Tnx CraAzAaaaaaaaaaaaaaaaay!

[ Bericht 50% gewijzigd door Chandler op 28-06-2007 15:30:05 ]
super-muffindonderdag 28 juni 2007 @ 16:01
Maakt dit qua preformance wat uit of niet?

1
2
3
4
5
6
7
8
var count_items = menu_items.length;
for(var i = 0; i < count_items; i++) {
   // doe iets tofs.
}

for(var i = 0; i < menu_items.length; i++) {
   // doe iets tofs.
}
super-muffindonderdag 28 juni 2007 @ 16:02
klopt het trouwens dat hier posts zijn verdwenen?
Chandlerdonderdag 28 juni 2007 @ 16:15
geen idee hehe.

Maar denk dat het wel wat uitmaakt, in PHP iig wel

De parser moet anders constant lezen hoeveel items er in een bepaalde array zitten en dat hoeft de parser niet te doen als jij die gegevens in een tijdelijke variabel zet!
super-muffindonderdag 28 juni 2007 @ 16:32
In PHP is dat waar inderdaad (lees ik net op php.net) Dus lijkt het me voor Javascript ook, hoewel ik het nergens kan vinden.

In dit geval maakt het niet zo heel erg veel uit, het gaat om array die bestaat uit wel 4 elementen
SuperRembodonderdag 28 juni 2007 @ 16:48
quote:
Op donderdag 28 juni 2007 16:01 schreef super-muffin het volgende:
Maakt dit qua preformance wat uit of niet?
[ code verwijderd ]
Ja dat maakt zeker uit.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// normaal
for (var i = 0; i < a.length; i++) 
{
   Foo(a[i]);
}
// sneller
for (var i = 0, l = a.length; i < l; ++i) 
{
   Foo(a[i]);
}
// nog sneller (maar in omgekeerde volgorde)
var i = a.length;
while (i--)
{
   Foo(a[i]);
}


De laatste versie is het snelst, maar die is wat minder duidelijk, dus die zou ik alleen gebruiken als de snelheid heel belangrijk is.
Chandlerdonderdag 28 juni 2007 @ 17:43
quote:
Op donderdag 28 juni 2007 16:48 schreef SuperRembo het volgende:

[..]

Ja dat maakt zeker uit.
[ code verwijderd ]

De laatste versie is het snelst, maar die is wat minder duidelijk, dus die zou ik alleen gebruiken als de snelheid heel belangrijk is.
Die laatste is toch simpel te gebruiken (ook andersom)

1
2
3
4
5
6
7
var i = a.length;
var j = 0;
while (i--)
{
    j++;
   Foo(a[j]);
}


:)

2 regels meer maar qua preformance even snel volgens mij...
CraZaaydonderdag 28 juni 2007 @ 19:20
quote:
Op donderdag 28 juni 2007 16:48 schreef SuperRembo het volgende:

De laatste versie is het snelst, maar die is wat minder duidelijk, dus die zou ik alleen gebruiken als de snelheid heel belangrijk is.
Goed die laatste! Ga ik meteen inbouwen in m'n project waarbij 500 objecten in een array gestopt moeten worden in een loop
Chandlerdonderdag 28 juni 2007 @ 20:49
Wat voor objecten?
CraZaaydonderdag 28 juni 2007 @ 21:00
Google Maps markers, infowindow's en nog wat spul.
Geqxonvrijdag 29 juni 2007 @ 19:41
quote:
Op donderdag 28 juni 2007 16:15 schreef Chandler het volgende:
geen idee hehe.

Maar denk dat het wel wat uitmaakt, in PHP iig wel

De parser moet anders constant lezen hoeveel items er in een bepaalde array zitten en dat hoeft de parser niet te doen als jij die gegevens in een tijdelijke variabel zet!
Maar is dat dan niet dynamisch? Als ik "a = document.getElementById('hi').length" pak, dan krijg ik toch elke keer als ik naar "a" vraag de dan geldende lengte van "hi" ? Of slaat hij deze waarde enkel 1 maal op?


Zelf had ik het probleem bij:

1
2
3
4
5
6
a = b.length;

i = 0
while (i < a)
b.removechild();
}


Dat dan dus enkel de helft van de childs weggegooid werd (5000 childs, dan is a op een gegeven moment 2500, i ook, en is a niet kleiner dan i meer.
ChOasvrijdag 29 juni 2007 @ 20:28
quote:
Op vrijdag 29 juni 2007 19:41 schreef Geqxon het volgende:

[..]

Maar is dat dan niet dynamisch? Als ik "a = document.getElementById('hi').length" pak, dan krijg ik toch elke keer als ik naar "a" vraag de dan geldende lengte van "hi" ? Of slaat hij deze waarde enkel 1 maal op?
a is op dat moment een statische variabele...

Je wijst maar 1 keer de waarde van 'document.getElementById('hi').length' aan 'a' toe ... die waarde krijgt a, en die verandert niet.

Dus als je telkens de nieuwe lengte wil zal je deze telkens opnieuw moeten opvragen.

Trouwens, .length is ongetwijfeld een item wat goedkoop is om op te vragen, dus zoveel maakt dat niet uit...

voor hetzelfde geld schrijf je

1
2
3
function va() {
 return document.getElementById('hi').length;
};


En gebruik je verder va() i.p.v. 'a'... (met als nadeel dat je de overhead van een functieaanroep hebt, maar maakt je code misschien in sommige gevallen wat netter)
SuperRembovrijdag 29 juni 2007 @ 21:11
Als je een aantal keer de length property van een element wil opvragen dan kan je wel het element zelf in een variable zetten. Dat scheelt een heleboel opzoekwerk in de DOM.

Maar volgens mij is er geen enkel html element die standard een length property heeft
Geqxonvrijdag 29 juni 2007 @ 22:06
quote:
Op vrijdag 29 juni 2007 21:11 schreef SuperRembo het volgende:
Als je een aantal keer de length property van een element wil opvragen dan kan je wel het element zelf in een variable zetten. Dat scheelt een heleboel opzoekwerk in de DOM.

Maar volgens mij is er geen enkel html element die standard een length property heeft
document.getElementById("div").elements.length? Of bedoel je dat niet?
SuperRembovrijdag 29 juni 2007 @ 22:18
Alleen een form element heeft een elements property, een div niet. Tenzij je die er zelf op zet natuurlijk.
Darkomendonderdag 5 juli 2007 @ 19:32
Ik wil dmv javascript een aantal punten op een plaatje kunnen aangeven en later deze of via een form of via xml opslaan in een mysql database.
De punten moeten ook nog verplaatst en verwijderd kunnen worden.

Ik kan me herinneren dat ik in een van de javascript voor dummies range een script daarvoor gezien heb, maar kan deze niet meer vinden.

Wie weet waar ik die kan vinden ?
PiRANiAzaterdag 14 juli 2007 @ 16:27
Ik heb een aantal <inputs> die ik gebruik als array.
Nou wil ik een knop om inputs er bij te doen.

Ik gebruik nu deze:

1
2
3
4
5
6
7
8
<script type="text/javascript">
<!--
function add()
{
   document.getElementById('cijferinvoer').innerHTML=document.getElementById('cijferinvoer').innerHTML + '<tr><th>CC</th><td><input type="text" name="cijfer[]" AUTOCOMPLETE="of"></td><td><input type="text" name="weging[]" AUTOCOMPLETE="of"></td>';
}
//-->
</script>


echter worden de ingevulde vakjes verwijderd als ik dit gebruik.
Is er een andere manier?
PiRANiAzaterdag 14 juli 2007 @ 16:45
oftewel: hoe voeg ik extra content toe aan een pagina zonder dat de input values verwijnen?

www.wrts.nl gebruikt het ook:
http://www.wrts.nl/lijst/create
Farenjizaterdag 14 juli 2007 @ 17:19
De makkelijkste en netste oplossing is niet het toevoegen via JS en innerHTML, maar dmv een div met style "display: none;" die je mbv javascript op "display: block;" zet. Zo zal de state van je form gewoon behouden blijven en hoef je ook geen html in je JS code op te nemen (want dat is :r).

Voorbeeldje:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<script type="text/javascript">

function showExtraContent() {
   var extraContent = document.getElementById('extraContent');
   extraContent.style.display = 'block';
}

</script>

<p>
standaard content bla bla bla</p>

<div id="extraContent" style="display: none;">
   bla bla bla extra content bla bla
</div>

<a href="#" onclick="showExtraContent(); return false;">klik voor extra content</a>
PiRANiAzaterdag 14 juli 2007 @ 17:25
quote:
Op zaterdag 14 juli 2007 17:19 schreef Farenji het volgende:
De makkelijkste en netste oplossing is niet het toevoegen via JS en innerHTML, maar dmv een div met style "display: none;" die je mbv javascript op "display: block;" zet. Zo zal de state van je form gewoon behouden blijven en hoef je ook geen html in je JS code op te nemen (want dat is ).

Voorbeeldje:


[ code verwijderd ]
maar dan kunnen er niet meerdere rijen toegevoegd worden.
PiRANiAzaterdag 14 juli 2007 @ 17:27
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function add()
{
   var tbody = document.getElementById
('cijferinvoer').getElementsByTagName("tbody")[0];
    var row = document.createElement("tr")
    var th1 = document.createElement("th")
    th1.appendChild(document.createTextNode("CC"))
   var td1 = document.createElement("td")
   var a = '<input type="text" name="var1[]" AUTOCOMPLETE="off">'
    td1.appendChild(document.createTextNode(a))
    var td2 = document.createElement("td")
    td2.appendChild (document.createTextNode('<input type="text" name="var2[]" AUTOCOMPLETE="off">'))
    row.appendChild(th1);
    row.appendChild(td1);
   row.appendChild(td2);
    tbody.appendChild(row);


deze gebruik ik nu.
Alles lukt, alleen komt er niet de inputbox die ik wil in de nieuwe TD's, maar gewoon tekst:
quote:
CC <input type="text" name="var1[]" AUTOCOMPLETE="off"> <input type="text" name="var1" AUTOCOMPLETE="off">
PiRANiAzaterdag 14 juli 2007 @ 17:30
1
2
  var a = '<input type="text" name="var1[]" AUTOCOMPLETE="off">'
    td1.appendChild(document.createTextNode(a))


Hoe maak ik dus in plaats van createTextNode: createHTMLNode oid...

bestaat dat? of moet het anders?
SuperRembozaterdag 14 juli 2007 @ 17:30
Of je gebruikt DOM functies om nieuwe html elementen toe te voegen.

Als je een willekeurig aantal regel toe wil kunnen voegen dan kom je er niet met een verborgen divje.

Het zal ook al schelen als je geen fouten maakt in de html die je toe voegt. Er ontbreekt een sluittag voor de tr, en autocomplete op "off" zetten (niet "of").
Farenjizaterdag 14 juli 2007 @ 17:32
WTF is dat AUTOCOMPLETE=off? Dat is sowieso geen geldige opmaak. Het zal een of andere custom toevoeging zijn voor een of ander script maar het zal hoogstwaarschijnlijk de reden zijn waarom je zo'n node niet mbv DOM kan aanmaken.
SuperRembozaterdag 14 juli 2007 @ 17:37
Autocomplete is gewoon een attribute om te voorkomen dat je browser de waarde van het veld automatisch aanvult.
Het probleem is dat je natuurlijk niet met createTextNode en een html string een invoerveld kan maken. Dat moet je ook via createElement doen.
PiRANiAzaterdag 14 juli 2007 @ 18:01
quote:
Op zaterdag 14 juli 2007 17:32 schreef Farenji het volgende:
WTF is dat AUTOCOMPLETE=off? Dat is sowieso geen geldige opmaak. Het zal een of andere custom toevoeging zijn voor een of ander script maar het zal hoogstwaarschijnlijk de reden zijn waarom je zo'n node niet mbv DOM kan aanmaken.
http://www.w3.org/Submission/web-forms2/#the-autocomplete
PiRANiAzaterdag 14 juli 2007 @ 18:01
quote:
Op zaterdag 14 juli 2007 17:37 schreef SuperRembo het volgende:
Autocomplete is gewoon een attribute om te voorkomen dat je browser de waarde van het veld automatisch aanvult.
Het probleem is dat je natuurlijk niet met createTextNode en een html string een invoerveld kan maken. Dat moet je ook via createElement doen.
createElement, ga ik proberen...
wondererdinsdag 17 juli 2007 @ 20:27
1
2
3
4
5
6
7
8
9
10
11
12
13
14
  function resize_images()
  {
    for (i = 0; i < document.images.length; i++)
    {
      while ( !document.images[i].complete )
      {
        break;
      }
      if ( document.images[i].width > 640 )
      {
        document.images[i].width = 640;
      }
    }
  }


Ik wil ervoor zorgen dat ie alleen images binnen een bepaalde div kleiner maakt, kan dat, als die div een ID heeft? Ik ben niet zo'n held met de volgorde in dat soort dingen :@
AnGabhardinsdag 17 juli 2007 @ 20:58
Zoiets?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function resize_images()
  {
   img=document.getElementById("id").getElementsByTagName("img");
   
    for (i = 0; i < img.length; i++)
    {
      while ( !img[i].complete )
      {
        break;
      }
      if ( img[i].width > 640 )
      {
        img[i].width = 640;
      }
    }
  }
Spockjuh_donderdag 19 juli 2007 @ 10:56
als javascript nono zie ik geen ander keus dan me te wenden tot de experts hier...

ik zoek nameljik een tool die mij kan helpen met het zichtbaar maken van een foto plus informatietext wanneer je over een naam gaat met de muis. Ik heb al een script gevonden maar dat is hogere school werk, iets wat mij dus telang gaat duren.

Om een duidelijk beeld te geven zoek ik het volgende:

de gebruiker gaat met de muis over en/of klikt op de naam die er staat. op dat moment komt er een popup scherm naar voren waar een foto instaat en wat begeleidende informatie (mogelijk ook een clickable url als dat mogelijk is) . zoals ik al zei is mijn kennis wat betreft java echt minimaal dus zoek of een goede script die gebruksvriendelijk is OF iemand die tijd over heeft en me kan helpen om iig een begin te maken met dit alles..
wondererdonderdag 19 juli 2007 @ 15:38
Zoiets heb ik wel es gemaakt en het kan in principe op twee manieren:

-je laadt alle foto's en informatie al op je pagina, maar in een divje met display:none; Met een mouseover of onclick verander je de style van dat divje dan naar zichtbaar (met een paar extra attributen zoals positie en grootte)

-Je maakt een aparte pagina die de betreffende foto zou laden (zoals je zou doen als je die pagina met de foto in een nieuw venster zou openen), gebruikt hetzelfde zichtbaar/onzichtbaar principe, maar bij onclick/mouseover maak je het divje niet alleen zichtbaar, je laadt via AJAX die pagina erin.

Geen van beide vergt heel veel codeerwerk en ik wil best wat posten. Kan alleen niet garanderen dat het perfect is dus als er een expert naar wil kijken voor je het gebruikt zou dat denk ik wel handig zijn
Spockjuh_donderdag 19 juli 2007 @ 15:40
elke hulp is welkom.. om het wat duidelijker te maken, het geheel moet komen in een geeklog cms systeem, de site vind je onder mijn profiel, kan bijna niet missen!
Farenjidonderdag 19 juli 2007 @ 19:14
quote:
Op donderdag 19 juli 2007 15:40 schreef Spockjuh_ het volgende:
elke hulp is welkom.. om het wat duidelijker te maken, het geheel moet komen in een geeklog cms systeem, de site vind je onder mijn profiel, kan bijna niet missen!
quote:
Not Found
The requested URL /suspended.page/ was not found on this server.

Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.
Spockjuh_donderdag 19 juli 2007 @ 20:28
ja klopt, ben bezig met de server op dit moment. wellicht niet het meeste geschikte tijdstip, ik weet het..
CiQNiZvrijdag 20 juli 2007 @ 08:42
Hoi,

wat nou als ik mijn hele (dynamische) pagina af wil laten hangen van een afbeelding qua dimensies. Dus aan de hand van de breedte worden de div's opgebouwd (aan de hand van het HTML DOM object).

Ja, dan doen we dus,
1
2
3
4
var plaatje = new Image();
plaatje.src = 'blaat.gif';
var breedte = plaatje.width;
var hoogte = plaatje.height;


Dit werkt in IE en Opera. In Firefox gaat het alles door elkaar omdat de gegevens op 0 staan. Vervolgens ververs ik de pagina in Firefox en alles staat goed.

Dan proberen we,
1
2
3
4
5
var plaatje = document.createElement('img');
plaatje.setAttribute('src', 'plaatje.gif');
eenDiv.appendChild(plaatje);
var breedte = plaatje.width;
var hoogte = plaatje.height;


Werkt wederom perfect in IE en Opera, Firefox zet alles weer op 0. Na een verversing is alles weer ok.

Misschien dan wachten tot het plaatje klaar is met laden
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
var startTijd = new Date();
var metError = false;
var plaatje = new Image();
plaatje.src = 'plaatje.gif';
plaatje.onLoad = plaatjeGeladen;

function plaatjeGeladen()
{
  var timeOut;
  var plaatjeCompleetGeladen = false;

  while (!plaatjeCompleetGeladen) {
    timeOut = new Date();

    if (plaatje.complete) {
      plaatjeCompleetGeladen = true;
      metError = false;
    }

    // timeout op laten treden na 10s
    if (timeOut.getTime() - startTijd.getTime() >= 10000) {
      plaatjeCompleetGeladen = true;
      metError = true;
    }
  }
}

var breedte = plaatje.width;
var hoogte = plaatje.height;


Mooi toch, met timeout voor afbeeldingen die echt niet gevonden kunnen worden, om niet in een oneindige loop te blijven hangen...

Maarrrr, dit werkt alleen echt goed in Opera... Serverside afbeeldingen geprobeerd, clientside, het werkt NIET.

Suggesties, iemand?
Geqxonvrijdag 20 juli 2007 @ 08:56
Wat doen clientHeight en offsetHeight bij je?
SuperRembovrijdag 20 juli 2007 @ 09:21
De onload event op plaatjes is in IE en FF geloof ik nog all buggy. Kijk eens naar de user_images() functie die hier op FOK (en op GoT) wordt gebruikt om te grootte plaatjes automatisch te verkleinen.
CiQNiZvrijdag 20 juli 2007 @ 10:36
quote:
Op vrijdag 20 juli 2007 08:56 schreef Geqxon het volgende:
Wat doen clientHeight en offsetHeight bij je?
Hetzelfde als height en width?
Helpt mij ook verder niet echt vrees ik :(
quote:
Op vrijdag 20 juli 2007 09:21 schreef SuperRembo het volgende:
De onload event op plaatjes is in IE en FF geloof ik nog all buggy. Kijk eens naar de user_images() functie die hier op FOK (en op GoT) wordt gebruikt om te grootte plaatjes automatisch te verkleinen.
Tja, nu weet ik dat de browsers de volgende dingen ondersteunen:

Firefox: image.complete, image.width, image.naturalWidth
Opera: image.complete, image.width
IE: image.width

Allemaal dus image.width.

Dan doe ik het volgende:
1
2
3
4
5
...
if (image.width > 0) {
  blaat();
}
...

(in een while-lus)

werkt prima in IE en Opera. Niet in Firefox.

Ik ga nog even een en ander proberen met clientWidth, offsetWidth en naturalWidth om er zeker van te zijn dat echt alle mogelijke opties daar mee heb geprobeerd ;)
CiQNiZvrijdag 20 juli 2007 @ 10:41
IE:
1
2
3
4
achtergrond.clientWidth: 0
achtergrond.offsetWidth: 0
achtergrond.naturalWidth: undefined
achtergrond.width: 550


Opera:
1
2
3
4
achtergrond.clientWidth: 0
achtergrond.offsetWidth: 0
achtergrond.naturalWidth: undefined
achtergrond.width: 550


Firefox:
1
2
3
4
achtergrond.clientWidth: 0
achtergrond.offsetWidth: 0
achtergrond.naturalWidth: 0
achtergrond.width: 0


Firefox NA verversen pagina:
1
2
3
4
achtergrond.clientWidth: 0
achtergrond.offsetWidth: 0
achtergrond.naturalWidth: 550
achtergrond.width: 550


Deze waardes krijg ik dus in alle browsers met var blaat = new Image EN var blaat = document.createElement('img')!!!!

[ Bericht 6% gewijzigd door CiQNiZ op 20-07-2007 10:47:15 ]
SuperRembovrijdag 20 juli 2007 @ 11:07
quote:
Op vrijdag 20 juli 2007 10:36 schreef CiQNiZ het volgende:
werkt prima in IE en Opera. Niet in Firefox.
Dat komt waarschijnlijk omdat je de property opvraagt als het plaatje noet niet (volledig) is geladen. Hoe je dat afvangt kan je dus even van die user_images() functie afkijken.
CiQNiZvrijdag 20 juli 2007 @ 11:12
quote:
Op vrijdag 20 juli 2007 11:07 schreef SuperRembo het volgende:

[..]

Dat komt waarschijnlijk omdat je de property opvraagt als het plaatje noet niet (volledig) is geladen. Hoe je dat afvangt kan je dus even van die user_images() functie afkijken.
Ik vraag de properties op TOTdat deze geset zijn. Dus dat houdt in dat ik wacht tot het plaatje geladen is (via een while-lus). Na 4 seconden zeg ik stop (duurt te lang, want het is lokaal), en dan heeft Firefox nog niks bijzonders gedaan. IE en Opera die komen niet eens zover, die zijn dan al lang klaar!
SuperRembovrijdag 20 juli 2007 @ 12:49
quote:
Op vrijdag 20 juli 2007 11:12 schreef CiQNiZ het volgende:

[..]

Ik vraag de properties op TOTdat deze geset zijn. Dus dat houdt in dat ik wacht tot het plaatje geladen is (via een while-lus). Na 4 seconden zeg ik stop (duurt te lang, want het is lokaal), en dan heeft Firefox nog niks bijzonders gedaan. IE en Opera die komen niet eens zover, die zijn dan al lang klaar!
Dat komt omdat er tijdens de while loop geen events worden afgehandeld. Waarschijnlijk staat op deze maniet de cpuload nog op 100% ook. Als je wil kijken of het plaatje na x seconden nog niet geladen is dan kan je beter setTimeout() gebruiken.
Spockjuh_zondag 22 juli 2007 @ 12:50


[ Bericht 100% gewijzigd door Spockjuh_ op 22-07-2007 12:51:30 (dubbel..) ]
Spockjuh_zondag 22 juli 2007 @ 12:50
quote:
Op donderdag 19 juli 2007 15:40 schreef Spockjuh_ het volgende:

als javascript nono zie ik geen ander keus dan me te wenden tot de experts hier...

ik zoek nameljik een tool die mij kan helpen met het zichtbaar maken van een foto plus informatietext wanneer je over een naam gaat met de muis. Ik heb al een script gevonden maar dat is hogere school werk, iets wat mij dus telang gaat duren.

Om een duidelijk beeld te geven zoek ik het volgende:

de gebruiker gaat met de muis over en/of klikt op de naam die er staat. op dat moment komt er een popup scherm naar voren waar een foto instaat en wat begeleidende informatie (mogelijk ook een clickable url als dat mogelijk is) . zoals ik al zei is mijn kennis wat betreft java echt minimaal dus zoek of een goede script die gebruksvriendelijk is OF iemand die tijd over heeft en me kan helpen om iig een begin te maken met dit alles..

elke hulp is welkom.. om het wat duidelijker te maken, het geheel moet komen in een geeklog cms systeem, de site vind je onder mijn profiel, kan bijna niet missen!
kunnen jullie nog eens een poging wagen, de boel draait weer..
Swetseneggervrijdag 27 juli 2007 @ 16:13
Als ik meerdere elementen met hetzelfde id heb in een source. Hoe kan ik dan met javascript de juiste vinden?

document.getElementById geeft volgens mij de eerste terug?
Geqxonvrijdag 27 juli 2007 @ 16:21
quote:
Op vrijdag 27 juli 2007 16:13 schreef Swetsenegger het volgende:
Als ik meerdere elementen met hetzelfde id heb in een source. Hoe kan ik dan met javascript de juiste vinden?

document.getElementById geeft volgens mij de eerste terug?
Het probleem anders oplossen? Kun je niet alles een bepaalde class-name geven? getElements() oid?
Swetseneggervrijdag 27 juli 2007 @ 16:28
quote:
Op vrijdag 27 juli 2007 16:21 schreef Geqxon het volgende:

[..]

Het probleem anders oplossen? Kun je niet alles een bepaalde class-name geven? getElements() oid?
neen... dat kan niet

het is niet mijn source
Geqxonvrijdag 27 juli 2007 @ 16:33
quote:
Op vrijdag 27 juli 2007 16:28 schreef Swetsenegger het volgende:

[..]

neen... dat kan niet

het is niet mijn source
En staan alle items niet toevallig in bijvoorbeeld een tabel? Je zou dan een getElements kunnen uitvoeren, dan krijg je een array met alle elementen binnen deze tabel. Vervolgens een for-loopje er overheen, een if-statement (if element.id == 'swets'), en zo ja > Iets doen.
Swetseneggervrijdag 27 juli 2007 @ 16:38
quote:
Op vrijdag 27 juli 2007 16:33 schreef Geqxon het volgende:

[..]

En staan alle items niet toevallig in bijvoorbeeld een tabel? Je zou dan een getElements kunnen uitvoeren, dan krijg je een array met alle elementen binnen deze tabel. Vervolgens een for-loopje er overheen, een if-statement (if element.id == 'swets'), en zo ja > Iets doen.
nou dat is vrij lastig. er is de niet w3c document.all functie. Maar de juiste syntax om het tweede element met hetzelfde id te vinden is lastig
Geqxonvrijdag 27 juli 2007 @ 16:41
quote:
Op vrijdag 27 juli 2007 16:38 schreef Swetsenegger het volgende:

[..]

nou dat is vrij lastig. er is de niet w3c document.all functie. Maar de juiste syntax om het tweede element met hetzelfde id te vinden is lastig :)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<div id="customerdatafield">
   <div id="negger">Data</div>
   <div id="swets">Data</div>
   <div id="negger">Data</div>
   <div id="swets">Data</div>
   <div id="negger">Data</div>
</div>

<script>

var parentdiv = "customerdatafield"
var childdiv = "swets";

var customerArray = document.getElementById(parentdiv).getElementsByTagName("div");


for (i = 0; i < customerArray.length; i++){
   var customer = customerArray[i];

   if (customer.id == childdiv){
      customer.style.backgroundColor = "#FF9900"
   }

}
</script>


Doet exact wat jij wilt. Gok ik. :)
wobbelzondag 19 augustus 2007 @ 20:40
Ik gebruik het volgende PHP, HTML en JS script:

Javascript code:
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
var xmlhttp=false;
/*@cc_on @*/
/*@if (@_jscript_version >= 5)
// JScript gives us Conditional compilation, we can cope with old IE versions.
// and security blocked creation of the objects.
 try {
  xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
 } catch (e) {
  try {
   xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
  } catch (E) {
   xmlhttp = false;
  }
 }
@end @*/
if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
  xmlhttp = new XMLHttpRequest();
}
function BarcodeCheck(value)
{
   xmlhttp.open("GET", "ajax_check.php?request=barcodecheck&barcode="+value,true);//method, target, async (set always true!)
   
   xmlhttp.onreadystatechange=function() {
      if (xmlhttp.readyState==4) {
         document.getElementById('BarcodeGeldigheid').innerHTML = xmlhttp.responseText;
      }
   }
   
   xmlhttp.send(null);
}


die ik op deze manier aanroep:
1<input type="text" name="BarcodeInputVeld" id="BarcodeInputVeld" onBlur="BarcodeCheck(this.value)" />



vervolgens krijg ik van ajax_check.php een waarde terug die ik met <span id="BarcodeGeldigheid"> </span> bekijk...

Nu komt het probleem, ajax check.php poept het volgende uit richting de HTML pagina:
1
2
<br /><font color="#00c600"><strong>F. van Gaalen (Sempron 2800+)</strong></font>
<script language="javascript">insRow()</script>


maar die code wordt niet uitgevoerd, want alert('hoi'); voert ie ook niet uit...whats the problem hiero? de tekst F. van Gaalen (Sempron 2800+) geeft ie wel netjes weer...

(en volgensmij werk ik heel erg verkeerd met AJAX, maar dan verbeter me maar (of geen tips enzo)
Farenjizondag 19 augustus 2007 @ 20:52
Als je mbv ajax een deel van een document dynamisch update, dan wordt javascript in die code idd niet uitgevoerd. Daar is weinig aan te doen behalve zelf alle javascript mbv "eval()" uitvoeren of je kan ook een of andere js lib gebruiken die dat voor je uit handen neemt (dojo kan dat bijv).
Geqxonzondag 19 augustus 2007 @ 20:53
Google eens wat op eval. Doet exact wat jij wilt.
wobbelzondag 19 augustus 2007 @ 21:28
quote:
Op zondag 19 augustus 2007 20:53 schreef Geqxon het volgende:
Google eens wat op eval. Doet exact wat jij wilt.
ik heb er al op gegoogled maar ik snap er echt geen fuck van...

Als ik namelijk hieronder een barcode invul:


en het is correct, dan wil ik namelijk het invul veld groen maken en 3 rijen toevoegen aan de tabel...



als ie niet correct is, dan mag het vakje rood worden en hoeven er niet 3 rijen te worden toegevoegd
Farenjizondag 19 augustus 2007 @ 23:20
Zo moeilijk is dat toch niet? Wat snap je niet?
Qunixmaandag 20 augustus 2007 @ 15:34
In het PHP topic vroeg ik het volgende:

Ik heb een formulier en ik wil een voorbeeld zien voordat het gesubmit wordt via een button. Een voorbeeld verschijnt in een popup... Alle inhoud komt alleen niet aan in de popup. Wat doe ik fout?

Inmiddels ben ik erachter dat het eventueel wel mogelijk is met Javascript. Na wat zoeken kom ik niet verder dan een voorbeeld te krijgen op dezelfde pagina.

Kan iemand mij helpen?
Farenjimaandag 20 augustus 2007 @ 15:39
Ik zou dat toch gewoon lekker met php doen en voor de preview een extra hidden formveld meesturen, preview=1, dat ervoor zorgt dat php de data niet wegschrijft maar alleen toont.
wonderermaandag 20 augustus 2007 @ 16:44
quote:
Op maandag 20 augustus 2007 15:34 schreef Qunix het volgende:
In het PHP topic vroeg ik het volgende:

Ik heb een formulier en ik wil een voorbeeld zien voordat het gesubmit wordt via een button. Een voorbeeld verschijnt in een popup... Alle inhoud komt alleen niet aan in de popup. Wat doe ik fout?

Inmiddels ben ik erachter dat het eventueel wel mogelijk is met Javascript. Na wat zoeken kom ik niet verder dan een voorbeeld te krijgen op dezelfde pagina.

Kan iemand mij helpen?
Zo'n functie heb ik toevallig deze week nog ergens gejat ;)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
function winOpener(theURL, winName, scrollbars, resizable, width, height) {

  winFeatures = 'left=' + (screen.availWidth-10-width)/2 + ',top=' + (screen.availHeight-30-height)/2 + ',scrollbars=' + scrollbars + ',resizable=' + resizable + ',width=' + width + ',height=' + height + ',toolbar=0,location=0,status=0,menubar=0'
    window.open(theURL, winName, winFeatures);
}

//Function to open preview window
function OpenPreviewWindow(formName){

  now = new Date;
  submitAction = formName.action;
  submitTarget = formName.target;

  winOpener('','preview',1,1,640,400)

  formName.action = 'forum.php?c=preview';
  formName.target = 'preview';
  formName.submit();

  formName.action = submitAction;
  formName.target = submitTarget;
}


En in je html zet je dit:
1<input type="button" class="inline_submit" name="submit_preview" value="voorbeeld" accesskey="p" onClick=" OpenPreviewWindow(document.forum_form);">


waar "forum_form" de naam is van je formulier.
RM-rfmaandag 20 augustus 2007 @ 16:59
quote:
Op maandag 20 augustus 2007 15:34 schreef Qunix het volgende:
In het PHP topic vroeg ik het volgende:

Ik heb een formulier en ik wil een voorbeeld zien voordat het gesubmit wordt via een button. Een voorbeeld verschijnt in een popup... Alle inhoud komt alleen niet aan in de popup. Wat doe ik fout?

Inmiddels ben ik erachter dat het eventueel wel mogelijk is met Javascript. Na wat zoeken kom ik niet verder dan een voorbeeld te krijgen op dezelfde pagina.

Kan iemand mij helpen?
wat je eigenlijk doet is gewoon een onclick-window-open() op de button...
dat betekent inderdaad dat er een 'gewoon' request gedaan wordt naar die pagina en géén formulier-waardes worden verstuurd...

dat is je probleem en dat is verder niet afhankelijk van php of javascript (als je liever javascript wil gebruiken om die preview te genereren moet je een functie die die gehele HTMl-code wegschrijft, ook dat is mogelijk)

wil je echter gewoon je bestaande code gebruiken, maar dan van je button een submit
1<input type="submit" onclick="popup('preview.php');" name="preview" value="Voorbeeld" />

in je functie pop moet je ervoor zorgen dat het nieuwe venster een name krijgt bv "nieuwvenster" en het formulier een target en dus het nieuwe submit-request post naar "nieuwvenster"...

via $_POST["preview"] kun je de waarde opvragen van de button die naar de preview doorstuurd, die dient ook "Voorbeeld" te zijn
Darkomenmaandag 20 augustus 2007 @ 19:08
1
2
3
4
5
6
7
8
9
10
<script language="javascript">
var data = window.opener.document.getElementById('content').value;
var title = window.opener.document.getElementById('title').value;
var subtitle = window.opener.document.getElementById('subtitle').value;
var ender = window.opener.document.getElementById('ender').value;
var regExp = new RegExp("n","g");
var result = data.replace(regExp,"<br/>");
document.writeln('<b>'+subtitle+'</b><br/><br/>');
document.writeln(result);
</script>


Dit is wat ik gebruik om info vanuit een formulier te halen.
Dit staat dan in de popup!
wobbeldonderdag 23 augustus 2007 @ 17:33
quote:
Op zondag 19 augustus 2007 23:20 schreef Farenji het volgende:
Zo moeilijk is dat toch niet? Wat snap je niet?
hoe ik dmv ajax er 3 extra rows bij kan krijgen, want javascript wordt niet uitgevoerd als ik ajax output
Qunixdonderdag 23 augustus 2007 @ 19:08
Thanks
Ik ga morgen ermee aan de slag
Chandlerwoensdag 29 augustus 2007 @ 16:01
Stel ik heb een array in js

vb:
1x = new Array("blaat" => "123", "woei" => "345");


hoe kan ik dan blaat en 123 uitlezen zoals in php met foreach ($x as $key => $value)

Anyone?
Geqxonwoensdag 29 augustus 2007 @ 16:10
quote:
Op woensdag 29 augustus 2007 16:01 schreef Chandler het volgende:
Stel ik heb een array in js

vb:
[ code verwijderd ]

hoe kan ik dan blaat en 123 uitlezen zoals in php met foreach ($x as $key => $value)

Anyone?
1
2
3
4
5
6
for (itemkey in arrayx){
   var itemvalue = arrayx[itemkey];
   
   alert (itemkey);
   alert(itemvalue);
}




[ Bericht 11% gewijzigd door Geqxon op 29-08-2007 16:17:35 ]
Chandlerwoensdag 29 augustus 2007 @ 16:26
wist niet dat het zo gemakkelijk was
Chandlerdonderdag 30 augustus 2007 @ 11:33
Nog een vraag.

Ik wil bepaalde elementen in een pagina veranderen als de brouwser wordt verkleind, echter lukt het niet met onderstaande code

1window.onresize = adBox();


Hoe doen jullie dit? PS onderstaande code is voor positioneren van Adsense SkyScraper

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
<table>
<tr>
    <td>Scherm breedte</td>
    <td><div id="pbreedte"></div></td>
</tr>
<tr>
    <td>Center scherm</td>
    <td><div id="pcenter"></div></td>
</tr>
<tr>
    <td>Positie links</td>
    <td><div id="plinks"></div></td>
</tr>
<tr>
    <td>Positie rechts</td>
    <td><div id="prechts"></div></td>
</tr>
</table>

<div id=centermidden style="position: absolute; top: 0; left: 0;display: none; border: 1px solid black; height: 300px; width: 160px; text-align: center;"> midden</div>
<div id=centerlinks style="position: absolute; top: 0; left: 0;display: none; border: 1px solid green; height: 300px; width: 160px;">Links</div>
<div id=centerrechts style="position: absolute; text-align: right; top: 0; left: 0;display: none; border: 1px solid orange; height: 300px; width: 160px;">Rechts</div>


<script language="javascript">

function adBox()
{
    contentSize = 500;

    document.getElementById('pbreedte').innerHTML = document.documentElement['offsetWidth'];
    document.getElementById('pcenter').innerHTML  = ((document.documentElement['offsetWidth'] -2)/2 - 80);

    midden = document.getElementById('pcenter').innerHTML;

    document.getElementById('plinks').innerHTML          = ((document.documentElement['offsetWidth']/2) - (contentSize /2) - 160);
    document.getElementById('centerlinks').style.left    = ((document.documentElement['offsetWidth']/2) - (contentSize /2) - 160);
    document.getElementById('centerlinks').style.display = 'block';

    document.getElementById('prechts').innerHTML          = ((document.documentElement['offsetWidth']/2) + (contentSize /2));
    document.getElementById('centerrechts').style.left    = ((document.documentElement['offsetWidth']/2) + (contentSize /2));
    document.getElementById('centerrechts').style.display = 'block';

    document.getElementById('centermidden').style.left    = document.getElementById('pcenter').innerHTML;
    document.getElementById('centermidden').style.display = 'block';
}

window.onresize = adBox();
adBox();
</script>
Geqxondonderdag 30 augustus 2007 @ 11:36
1      window.attachEvent("onresize", adBox)


Voor Internet Explorer tenminste. Die van Firefox is mij even ontvlogen.

Edit: Schaamteloze copy/paste:

1
2
3
4
5
6
if (window.addEventListener)       //DOM method for binding an event
   window.addEventListener("load", dothis, false)
else if (window.attachEvent)       //IE exclusive method for binding an event
   window.attachEvent("onload", dothis)
else if (document.getElementById) //support older modern browsers
   window.onload=dothis
Chandlerdonderdag 30 augustus 2007 @ 12:07
Leuke foutmelding van FF:

Fout: uncaught exception: [Exception... "Could not convert JavaScript argument" nsresult: "0x80570009 (NS_ERROR_XPC_BAD_CONVERT_JS)" location: "JS frame :: file:///..../desktop/centerscreen.html :: <TOP_LEVEL> :: line 51" data: no]

Foutieve code
1window.addEventListener("onresize", adBox(), false)


Ook foute code maar zonder error
1window.addEventListener("onresize", adBox, false)


Beiden werken trouwens niet in FF
super-muffindonderdag 30 augustus 2007 @ 12:13
1window.addEventListener("onresize", "adBox()", false);
Chandlerdonderdag 30 augustus 2007 @ 12:54
quote:
Op donderdag 30 augustus 2007 12:13 schreef super-muffin het volgende:
[ code verwijderd ]
Fout: uncaught exception: [Exception... "Could not convert JavaScript argument" nsresult: "0x80570009 (NS_ERROR_XPC_BAD_CONVERT_JS)" location: "JS frame :: file:///.../desktop/centerscreen.html :: <TOP_LEVEL> :: line 51" data: no]
Geqxondonderdag 30 augustus 2007 @ 12:55
quote:
Op donderdag 30 augustus 2007 12:07 schreef Chandler het volgende:
Leuke foutmelding van FF:

Fout: uncaught exception: [Exception... "Could not convert JavaScript argument" nsresult: "0x80570009 (NS_ERROR_XPC_BAD_CONVERT_JS)" location: "JS frame :: file:///..../desktop/centerscreen.html :: <TOP_LEVEL> :: line 51" data: no]

Foutieve code
[ code verwijderd ]

Ook foute code maar zonder error
[ code verwijderd ]

Beiden werken trouwens niet in FF
En wat als je er "resize" in plaats van "onresize" van maakt, en je geen haakjes achter je functie plakt?
Chandlerdonderdag 30 augustus 2007 @ 13:08
Helaas het zelfde effect... echter werkt het wel weer als ik in de body onresize plaats maar dat wil ik 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
<html>
<head>
    <title>text resize</title>
</head>
<body onResize="adBox();">

<table>
<tr>
    <td>Scherm breedte</td>
    <td><div id="pbreedte"></div></td>
</tr>
<tr>
    <td>Center scherm</td>
    <td><div id="pcenter"></div></td>
</tr>
<tr>
    <td>Positie links</td>
    <td><div id="plinks"></div></td>
</tr>
<tr>
    <td>Positie rechts</td>
    <td><div id="prechts"></div></td>
</tr>
</table>

<div id=centermidden style="position: absolute; top: 0; left: 0;display: none; border: 1px solid black; height: 300px; width: 160px; text-align: center;"> midden</div>
<div id=centerlinks style="position: absolute; top: 0; left: 0;display: none; border: 1px solid green; height: 300px; width: 160px;">Links</div>
<div id=centerrechts style="position: absolute; text-align: right; top: 0; left: 0;display: none; border: 1px solid orange; height: 300px; width: 160px;">Rechts</div>


<script language="javascript">

function adBox()
{
    contentSize = 500;

    document.getElementById('pbreedte').innerHTML = document.documentElement['offsetWidth'];
    document.getElementById('pcenter').innerHTML  = ((document.documentElement['offsetWidth'] -2)/2 - 80);

    midden = document.getElementById('pcenter').innerHTML;

    document.getElementById('plinks').innerHTML          = ((document.documentElement['offsetWidth']/2) - (contentSize /2) - 160);
    document.getElementById('centerlinks').style.left    = ((document.documentElement['offsetWidth']/2) - (contentSize /2) - 160);
    document.getElementById('centerlinks').style.display = 'block';

    document.getElementById('prechts').innerHTML          = ((document.documentElement['offsetWidth']/2) + (contentSize /2));
    document.getElementById('centerrechts').style.left    = ((document.documentElement['offsetWidth']/2) + (contentSize /2));
    document.getElementById('centerrechts').style.display = 'block';

    document.getElementById('centermidden').style.left    = document.getElementById('pcenter').innerHTML;
    document.getElementById('centermidden').style.display = 'block';
}


if (window.addEventListener)       //DOM method for binding an event
{
    window.addEventListener("resize", adBox(), true)
}
else if (window.attachEvent)       //IE exclusive method for binding an event
{
    window.attachEvent("resize", adBox())
}
else if (document.getElementById) //support older modern browsers
{
    window.resize = adBox();
}

adBox();
</script>

</body>
</html>
Geqxondonderdag 30 augustus 2007 @ 13:16
Helaas kan ik het hier niet even snel cross-browser testen, maar dit stukje script werkt onder FireFox en IE7 prima:

1
2
3
4
5
6
7
8
9
10
function showMessage(){
   alert("Yoob");
}

if (window.addEventListener)       //DOM method for binding an event
   window.addEventListener("resize", showMessage, false)
else if (window.attachEvent)       //IE exclusive method for binding an event
   window.attachEvent("onresize", showMessage)
else if (document.getElementById) //support older modern browsers
   window.onresize=showMessage
Chandlerdonderdag 30 augustus 2007 @ 13:20
Het werkt nu wel iig, maar zie eingelijk geen verschil what happend?
Chandlerdonderdag 30 augustus 2007 @ 13:21
In IE6 (hier op mijn werk) werkt de resize functie iig niet
SuperRembodonderdag 30 augustus 2007 @ 13:24
Met de addEvent/removeEvent functies van quirksmode.org:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
function addEvent( obj, type, fn )
{
   if (obj.addEventListener)
      obj.addEventListener( type, fn, false );
   else if (obj.attachEvent)
   {
      obj["e"+type+fn] = fn;
      obj[type+fn] = function() { obj["e"+type+fn]( window.event ); }
      obj.attachEvent( "on"+type, obj[type+fn] );
   }
}

function resizeHandler(e)
{
   // ...
}

addEvent(window, "resize", resizeHandler);
Geqxondonderdag 30 augustus 2007 @ 13:24
quote:
Op donderdag 30 augustus 2007 13:20 schreef Chandler het volgende:
Het werkt nu wel iig, maar zie eingelijk geen verschil what happend?
Je moet natuurlijk wel de twee haakjes achter adBox weghalen, als je hem in een event-handler dondert.

[ Bericht 2% gewijzigd door Geqxon op 30-08-2007 13:30:58 ]
Chandlerdonderdag 30 augustus 2007 @ 13:36
@SuperRembo; dat werkt inderdaad heerlijk! in zowel IE als FF
@Geqxon: dat heb ik dus af en toe ook verwijderd met hetzelfde resultaat
Geqxondonderdag 30 augustus 2007 @ 13:44
quote:
Op donderdag 30 augustus 2007 13:24 schreef SuperRembo het volgende:
Met de addEvent/removeEvent functies van quirksmode.org:
[ code verwijderd ]
Doet dit niet basicly hetzelfde?
Chandlerdonderdag 30 augustus 2007 @ 18:05
Volgens mij wel, maar nu blijkt dit weer niet te werken in FF krijg een melding dat LEFT niet geaccepteerd wordt!

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
<div id=centerrechts style="top: 250px; position: absolute; left: 0;display: none; width: 120px;">
... adsense enzo....
</div>


<script language="javascript">
function adBox()
{
    contentSize = 720;

    midden = ((document.documentElement['offsetWidth'] -2)/2 - 80);

    document.getElementById('centerrechts').style.left    = ((document.documentElement['offsetWidth']/2) + (contentSize /2));
    document.getElementById('centerrechts').style.display = 'block';
}


function addEvent( obj, type, fn )
{
   if (obj.addEventListener)
      obj.addEventListener( type, fn, false );
   else if (obj.attachEvent)
   {
      obj["e"+type+fn] = fn;
      obj[type+fn] = function() { obj["e"+type+fn]( window.event ); }
      obj.attachEvent( "on"+type, obj[type+fn] );
   }
}

addEvent(window, "resize", adBox);

adBox();
</script>


en dan de melding in FF

1
2
3
Error: Error in parsing value for property 'left'.  Declaration dropped.
Source File: http://www.gfxpoll.nl/index.php
Line: 0


:? snap ut nou helemaal niet meer :P FF ver. 1.5.0.12
SuperRembodonderdag 30 augustus 2007 @ 18:09
quote:
Op donderdag 30 augustus 2007 13:44 schreef Geqxon het volgende:

[..]

Doet dit niet basicly hetzelfde?
Basicly wel. In mijn versie kan je de code makkelijker hergebruiken. Verder zit er een verschil in de scope waarin de handlers worden uitgevoerd.
Maar beide versies zijn verre van bug-vrij.
SuperRembodonderdag 30 augustus 2007 @ 18:20
quote:
Op donderdag 30 augustus 2007 18:05 schreef Chandler het volgende:
Volgens mij wel, maar nu blijkt dit weer niet te werken in FF krijg een melding dat LEFT niet geaccepteerd wordt!
[ code verwijderd ]

en dan de melding in FF
[ code verwijderd ]

snap ut nou helemaal niet meer FF ver. 1.5.0.12
Het is niet zo dat de style.left property niet wordt ondersteund, maar de waarde die je er in probeert te zetten is ongeldig. Style.left moet een lengte zijn: een getal en een eenheid (bij px, pt of %). Alleen bij de waarde 0 mag je de eenheid weglaten.

En het wordt tijd om FF te updaten naar 2.x
Geqxondonderdag 30 augustus 2007 @ 19:02
quote:
Op donderdag 30 augustus 2007 18:09 schreef SuperRembo het volgende:

[..]

Basicly wel. In mijn versie kan je de code makkelijker hergebruiken. Verder zit er een verschil in de scope waarin de handlers worden uitgevoerd.
Maar beide versies zijn verre van bug-vrij.
Ik heb mij er eens even in verdiept, ik heb hem door. Dank u
Chandlerdonderdag 6 september 2007 @ 10:30
Nog een vraagje over arrays

In php kan ik een array zo aanmaken.

$arr = array("naam" => "value");

maar dit werkt niet zo in JS.

arr = new Array("naam" => "value");

hoe doe ik dit in JS?
SuperRembodonderdag 6 september 2007 @ 13:20
Wat er in javascript het meeste op lijkt is dit:
1
2
3
var arr = {foo: "bar", baz: "bazz"};
alert(arr["foo"]);
alert(arr.foo);


Dan heb je een object/collection. Het is geen array, dus je hebt bijvoorbeeld geen length property die aangeeft hoeveel elementen er in zitten.
Farenjidonderdag 6 september 2007 @ 13:24
In javascript is alles een object en kun je dus overal ongelimiteerd properties aan toekennen. Dit kan op vele manieren, dit is allemaal equivalent:

1
2
3
4
var blaat;
blaat.property1 = "blaat";

blaat["property1"] = "blaat;

of:
1
2
3
var blaat = {
  property1:  "blaat"
};
Chandlerdonderdag 6 september 2007 @ 13:29
Ah SuperRembo, jammer dat dat er niet in verwerkt zit want de optie die je aangeeft is niet echt wat ik zoek dan maar zonder array werken
SuperRembodonderdag 6 september 2007 @ 15:00
quote:
Op donderdag 6 september 2007 13:29 schreef Chandler het volgende:
Ah SuperRembo, jammer dat dat er niet in verwerkt zit :{ want de optie die je aangeeft is niet echt wat ik zoek :( dan maar zonder array werken :P
Wat zoek je dan? Je kunt er wel doorheen lopen met een for:

1
2
3
4
5
var myCollection = {foo: "bar", baz: "bazz"};
for (var i in myCollection)
{
   alert(myCollection[i]);
}
CraZaaydonderdag 6 september 2007 @ 15:40
quote:
Op donderdag 6 september 2007 13:29 schreef Chandler het volgende:
Ah SuperRembo, jammer dat dat er niet in verwerkt zit want de optie die je aangeeft is niet echt wat ik zoek dan maar zonder array werken
Er zitten wel arrays in, maar niet met named keys. Maar wat wil je precies doen? Het zou zomaar kunnen dat het toch lukt met objecten of anderszins
Chandlerdonderdag 6 september 2007 @ 17:27
Ik wil een formulier posten middels ajax, zie code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
<html>
<head>
<script language="javascript">

var xmlHttp;                 // xmlHttp var.
var xmlHttpError;            // error variable
var xmlHttpFailure = false;  // false for failure
var xmlHttpCache;            // buffer for received data

function create_http_object()
{
    // This array is a list of all/most possible XMLHTTP types
    var ActiveXTypes = [
        "Microsoft.XMLHTTP",
        "MSXML2.XMLHTTP.5.0",
        "MSXML2.XMLHTTP.4.0",
        "MSXML2.XMLHTTP.3.0",
        "MSXML2.XMLHTTP"
    ];

    // Loop through the ActiveXTypes array and 
    for (var i = 0; i < ActiveXTypes.length; i++)
    {
        // try to use the current XMLHTTP object,
        // if not it's not possible try the next
        try
        {
            return new ActiveXObject(ActiveXTypes[i]);
        }
        catch(e)
        { 
            // object kan niet gebruikt worden!
        }
    }

    // none of them worked, try the function XMLHttpRequest()
    try
    {
        return new XMLHttpRequest();
    }
    catch(e)
    { 
        alert("Helemaal geen XML mogelijkheden");
    }

    // It seems that the browser doesn't support AJAX Stuff
    return false;
}

function stateChanged() 
{
    // is readyState 4? 4 =  all data is received 
    if (xmlHttp.readyState == 4)
    {
        // return data to xmlHttpCache variable
        xmlHttpCache = xmlHttp.responseText;
    }
}

function ajaxSubmit(url, data, returnOBJ)
{
    // url         location of the scripting
    // data        array of submit data
    // returnOBJ   is the object to return the received data to


    // open XMLHTTP connection
    xmlHttp = create_http_object();

    // connection open?
    if (xmlHttp != false)
    {
 
        // when state is ready, do save
        xmlHttp.onreadystatechange = stateChanged();
        // open url
        xmlHttp.open('POST', url, true);

        // set headers before posting
        xmlHttp.setRequestHeader("Content-type",  "application/x-www-form-urlencoded");
        xmlHttp.setRequestHeader("Content-length", data.length);
        xmlHttp.setRequestHeader("Connection",    "close");

        // send data to server
        xmlHttp.send(data);

        // object is given! (or not?)
        if (returnOBJ != "")
        {
            // add received content to given object (returnOBJ)
            returnOBJ = xmlHttpCache;
        }
    }
    else
    {
        // display ERROR notice
        notifyNoAjax();
    }
}

function ajaxGet(url, data, returnOBJ)
{

    // url          location of scripting
    // data         compilation of string paramters
    // return OBJ   object to return received data to 

    // open XMLHTTP connection
    xmlHttp = create_http_object();

    // connection open?
    if (xmlHttp != false)
    {
        // what to do with received data!
        xmlHttp.onreadystatechange = stateChanged();
        
        // open url location
        xmlHttp.open('GET', url + data, true);

        // send nothing, just go receive data
        xmlHttp.send(null);

        // if received data is longer then....
        if (xmlHttpCache.length > 0 && returnOBJ != "")
        {
            returnOBJ = xmlHttpCache;
        }
    }
    else
    {
        // display ERROR notice!
        notifyNoAjax();
    }
}

function notifyNoAjax()
{
    if (xmlHttpFailure == false)
    {
        alert('Sorry, uw brouwser ondersteund geen AJAX / Javascript calls');
    }
}


</script>
</head>
<body>


<div id="receiveddatadiv" style="width: 300px; height: 100px; border: 1px solid green">Content is comming....</div>


<a href="#" onClick="ajaxGet('file://c:/1.html', 
                             '', 
                             document.getElementById('receiveddatadiv').innerHtml);">AJAX GET TEST</a>

<form>
Name: <input type="text" id="id_name"><br />
Text: <textarea name="text" id="id_text"></textarea><br />
</form>

<input type="button" onClick="ajaxSubmit('c:/test.php', 
                                         'name='  + escape(encodeURI(document.getElementById('id_name').value)) + 
                                         '&text=' + escape(encodeURI(document.getElementById('id_text').value)),
                                         document.getElementById('receiveddatadiv').innerHtml);" value="AJAX POST TEST">
</body>
</html>


echter wilde ik eerst alle variabelen middels een array doorgeven naar de ajaxSubmit of ajaxGet.

Ps wat vinden jullie van dit? heb het nog niet getest hoor :) :D :@
SuperRembodonderdag 6 september 2007 @ 18:53
1
2
3
4
5
6
7
8
9
10
11
12
function encodeParams(params)
{  
   var data = [];
   for (p in params)
   {
      data.push(encodeURIComponent(p) + "=" + encodeURIComponent(params[p]));
   }
   return data.join("&");
}

var params = { code: "foo", name: "Foo" };
var data = encodeParams(params);

Dan kan je de variabele data in een url ("test.php?" + data) of als post data in een http request (request.send(data)).
quote:
Sorry, uw brouwser ondersteund geen AJAX / Javascript calls
Chandlervrijdag 7 september 2007 @ 09:32
quote:
Op donderdag 6 september 2007 18:53 schreef SuperRembo het volgende:

[ code verwijderd ]

Dan kan je de variabele data in een url ("test.php?" + data) of als post data in een http request (request.send(data)).
[..]

Mooi lapje code! maar wat bedoel je met de laatste quote? Ik heb de code trouwens aangepast

http://www.bruggema.nl/ajaxtest/#

Nu nog een vraagje, als ik een post doe krijg ik iedere keer een nieuwe inhoud (met cache variabel) maar als ik dit met een GET doe krijg ik continue het zelfde wrom?

[ Bericht 31% gewijzigd door Chandler op 07-09-2007 11:26:42 (visfreaks.nl rulez big time) ]
CraZaayvrijdag 7 september 2007 @ 12:04
quote:
Op vrijdag 7 september 2007 09:32 schreef Chandler het volgende:

[..]

Mooi lapje code! maar wat bedoel je met de laatste quote?
Dat je code als het een publieke website is liever ook werkt als JS uit staat denk ik, en dat mensen zonder JS deze alert nooit gaan zien
Chandlervrijdag 7 september 2007 @ 12:16
Haha, duidelijk ja true true..

Heb je iig nog comments op mjin funcies? hoor graag opbouwende kritiek!
Farenjivrijdag 7 september 2007 @ 14:44
quote:
Op vrijdag 7 september 2007 12:16 schreef Chandler het volgende:
Haha, duidelijk ja true true..

Heb je iig nog comments op mjin funcies? hoor graag opbouwende kritiek!
Wat doet die returnObj parameter in je functie? Parameters zijn om iets door te geven aan een functie, niet voor return values... bovendien zie ik de functie nergens wachten tot er een resultaat is. Er wordt vanuit gegaan dat er meteen resultaat is, dat werkt heel misschien als je op localhost zit te testen maar dat gaat gegarandeerd mis als de request iets langer duurt, want alles gaat asynchroon en het script blijft daar dus niet op wachten. Met AJAX wil je netjes event based werken, maw: een callbackfunctie definieren die pas aangeroepen wordt als alle data ook daadwerkelijk binnen is. Als je dat niet doet heb je (zeker bij meerdere ajax calls door elkaar die van elkaar afhankelijk zijn) grote kans op een zeer instabiele applicatie die moeilijk tot onmogelijk te debuggen is. Been there, done that, got the t-shirt....

Tip: ga niet zelf het wiel opnieuw uitvinden maar gebruik een goede kant en klare AJAX library. AJAX is veel complexer dan de meesten denken en het vereist een fundamenteel andere denkwijze; met gewoon standaard procedureel programmeren (wat jij hier doet) kom je er echt niet.
Chandlervrijdag 7 september 2007 @ 15:00
Hoi Farenji, ik begrijp je dat je zegt dat je het wiel niet opnieuw moet uitvinden, dat wordt zovaak gezegd maar als we het wiel nooit verder zouden uitvinden waren raceauto's nog steeds zo sloom als slakken

Maar om even inhoudenlijk op je reactie m.b.t. de javascript code in te gaan. die returnOBJ wordt gebruikt om de callbackfunctie aan te geven. Dit omdat ik de standaard submit en get functie wil gebruiken met apparte functies voor het 'benutten' van de output van het script!

Ik heb vanmiddag de scripting weer deels aangepast omdat er toch aardig wat foutjes in zaten. Deze moeten als het goed is nu ook opgelost zijn!.

Verder nog tips qua preformance? ennuh het loopt nu niet meer op localhost hoor maar op http://www.bruggema.nl/ajaxtest
SuperRembovrijdag 7 september 2007 @ 23:09
quote:
Op vrijdag 7 september 2007 09:32 schreef Chandler het volgende:
Mooi lapje code! maar wat bedoel je met de laatste quote? Ik heb de code trouwens aangepast
De spelling "brouwser"
Geqxonvrijdag 7 september 2007 @ 23:37
quote:
Op vrijdag 7 september 2007 23:09 schreef SuperRembo het volgende:

[..]

De spelling "brouwser"
"ondersteund"
Chandlerzaterdag 8 september 2007 @ 08:42
Haha, ja ik ben nooit geslaagd voor mijn Nederlands maar nu nog inhoudelijk commentaar op mijn scripting?
Farenjizaterdag 8 september 2007 @ 13:47
quote:
Op vrijdag 7 september 2007 15:00 schreef Chandler het volgende:
Hoi Farenji, ik begrijp je dat je zegt dat je het wiel niet opnieuw moet uitvinden, dat wordt zovaak gezegd maar als we het wiel nooit verder zouden uitvinden waren raceauto's nog steeds zo sloom als slakken
Als bij elke auto de motor opnieuw uitgevonden zou worden zouden auto's 120 miljoen per stuk kosten en ze zouden voor geen meter rijden.
quote:
Maar om even inhoudenlijk op je reactie m.b.t. de javascript code in te gaan. die returnOBJ wordt gebruikt om de callbackfunctie aan te geven. Dit omdat ik de standaard submit en get functie wil gebruiken met apparte functies voor het 'benutten' van de output van het script!
Hmm in je code die je hier postte dus niet. Daar wordt het resultaat meteen na de ajaxcall in returnObj gestopt en dat was niet handig. Zoals je het nu doet is het wel beter.
Chandlerzaterdag 8 september 2007 @ 17:37
Je hebt gelijk over de kosten maar in mijn geval gaat het om moeite hé..

Vind het zelf wel een aardig gelukt stukje en zal het ook gaan gebruiken voor mijn nieuwe sites
SuperRembozaterdag 8 september 2007 @ 18:45
quote:
Op zaterdag 8 september 2007 08:42 schreef Chandler het volgende:
maar nu nog inhoudelijk commentaar op mijn scripting?
* create_http_object probeert voor Firefox eerst al die ActiveX dingen te maken (die natuurlijk niet lukken), pas daarna wordt XMLHttpRequest() aangeroepen. Beetje zonde.
* De parameter returnOBJ returnt niets en is geen object, foute naam dus.
* ajaxSubmit en ajaxGet controleren of create_http_object wel gelukt is en geven dan een melding. Die melding geeft de functie create_http_object zelf ook al.
* Er zit wat dubbele code in, kan vast wel efficienter
Chandlerzaterdag 8 september 2007 @ 19:52
quote:
Op zaterdag 8 september 2007 18:45 schreef SuperRembo het volgende:
* create_http_object probeert voor Firefox eerst al die ActiveX dingen te maken (die natuurlijk niet lukken), pas daarna wordt XMLHttpRequest() aangeroepen. Beetje zonde.
Dus eingelijk die XMLHttpRequest eerst proberen en daarna de rest? (zonder controle brouwser!)
quote:
* De parameter returnOBJ returnt niets en is geen object, foute naam dus.
Klopt, heb ik veranderd in stateFunction
quote:
* ajaxSubmit en ajaxGet controleren of create_http_object wel gelukt is en geven dan een melding. Die melding geeft de functie create_http_object zelf ook al.
Dus eingeljik zou ik beter de functie notifyNoAjax(); in create_http_object kunnen zetten?
quote:
* Er zit wat dubbele code in, kan vast wel efficienter
Zou je mij even wat in de richting kunnen duwen van de inefficiente code?

[/quote]
SuperRembozaterdag 8 september 2007 @ 20:13
quote:
Op zaterdag 8 september 2007 19:52 schreef Chandler het volgende:
Dus eingelijk die XMLHttpRequest eerst proberen en daarna de rest? (zonder controle brouwser!)
Dat zou al beter zijn. Het kan nog mooier (code van Crisp als ik 't goed heb):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
if (!window.XMLHttpRequest) 
{
   window.XMLHttpRequest = function() 
   {
      var types = [
         'Microsoft.XMLHTTP',
         'MSXML2.XMLHTTP.5.0',
         'MSXML2.XMLHTTP.4.0',
         'MSXML2.XMLHTTP.3.0',
         'MSXML2.XMLHTTP'   
      ];

      for (var i = 0; i < types.length; i++) 
      {
         try 
         {
            return new ActiveXObject(types[i]);
         } 
         catch(ex) {}
      }
      throw "XMLHttpRequest not supported.";
   }
}


Dan kan je gewoon overal "var request = new XMLHttpRequest()" gebruiken, ook in IE5/6. Als een browser het echt niet ondersteunt geeft ie een error (XMLHttpRequest not supported), tja, met zo'n ouwe browser moet je niet zeuren ;)
quote:
Zou je mij even wat in de richting kunnen duwen van de inefficiente code?
1
2
3
4
5
6
7
8
if (data != "")
{
   xmlHttp.open('GET', url + data + "&cache=" + saveDate.getTime(), true);
}
else
{
   xmlHttp.open('GET', url + "?cache=" + saveDate.getTime(), true);
}


1
2
3
4
5
6
7
8
9
10
if (data != "")
{
   url += data + "&";
}
else
{
   url += "?";
}
url += "cache=" + saveDate.getTime();
xmlHttp.open('GET', url, true);


(Kan natuurlijk korter en efficienter, maar dit is een voorbeeld)
wobbelzondag 9 september 2007 @ 10:18
1
2
3
4
5
6
7
8
9
10
function evalRequest(value) {
     var xmlhttp = new XMLHttpRequest();
     xmlhttp.onreadystatechange = function() {
          if (xmlhttp.readyState==4 && xmlhttp.status==200) {
               eval(xmlhttp.responseText);
          }
     }
     xmlhttp.open("GET", "ajax_check.php?request=barcodecheck&barcode="+value,true);
     xmlhttp.send(null);
 }


de regel met eval ( ) geeft een foutmnelding in IE7 dat er een Syntaxfout is.

Ik gebruik btw eval() omdat ajax_check.php een javascript code teruggeeft
SuperRembozondag 9 september 2007 @ 10:56
Wat staat er in xmlhttp.responseText?
wobbelzondag 9 september 2007 @ 11:04
quote:
Op zondag 9 september 2007 10:56 schreef SuperRembo het volgende:
Wat staat er in xmlhttp.responseText?
daar hebben we het probleem al, ajax_check werd gecached nu niet meer

DAnk
Litphozondag 9 september 2007 @ 11:10
quote:
Op vrijdag 7 september 2007 14:44 schreef Farenji het volgende:
Tip: ga niet zelf het wiel opnieuw uitvinden maar gebruik een goede kant en klare AJAX library.
Voor productie, ja. Voor het aanleren daarentegen valt er heel wat voor te zeggen om een deel van het wiel zelf uit te vinden (en zo complex was AJAX nou ook weer niet).
wobbelzondag 9 september 2007 @ 11:35
- deze was te stom -
wobbelzondag 9 september 2007 @ 23:26
Ik ben echt een held in javascript...en daarom lukt mij het een en ander ook niet.

Ik heb een soort van intranetje geknutseld, waarmee ik computerreparaties kan aanmelden. De PC krijgt een barcode en met die barcode kunnen we de gegevens van de klant meteen opvragen.

1e fout: als ik eerst goede code doe, en dan foute laat ie de rijen van de goede code staan (mag dus niet)
2e fout: als ik meerdere malen een goede code invul blijven de rijen zich opstapelen

Hieronder het een en ander uitgelegd in een super helder filmpje klik op de praatballonnetjes om door te gaan => http://www.dumpzooi.nl/intranet/intranet/intranet.html
De pagina waarop jullie het kunnen testen Werkt om een of andere duistere reden alleen in IE: http://www.dumpzooi.nl/intranet/

De PHP code (in princiepe niet relevant voor dit verhaal, is alleen om te testen):
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
<?php
# fok verwijdert wat backslashes..
header('Cache-Control: no-cache');
header('Pragma: no-cache');

if ( 
$_GET['barcode'] )
{

    if ( 
$_GET['barcode'] == "CO-1337" )
    {

        echo 
"insRow(1,'  <img src="images/toptoright.gif" />Naam','<input type="text" name="textfield2" id="textfield2" value="Smit" />')";
        echo 
"rn";
        echo 
"insRow(2,'  <img src="images/toptoright.gif" />Telefoonnummer','<input type="text" name="textfield2" id="textfield2" value="074-23663593" />')";
        echo 
"rn";
        echo 
"barcodeveldColor('found')";

    
    }
    elseif ( 
$_GET['barcode'] == "CO-1336" )
    {

        echo 
"insRow(1,'  <img src="images/toptoright.gif" />Naam','<input type="text" name="textfield2" id="textfield2" value="Janssen" />')";
        echo 
"rn";
        echo 
"insRow(2,'  <img src="images/toptoright.gif" />Telefoonnummer','<input type="text" name="textfield2" id="textfield2" value="074-26663593" />')";
        echo 
"rn";
        echo 
"barcodeveldColor('found')";

    
    }
    else
    {
    
        echo 
"barcodeveldColor('notfound')";
    
    }

}
else
{

    echo 
"barcodeveldColor('notfound')";

}
?>
SuperRembomaandag 10 september 2007 @ 07:31
quote:
Op zondag 9 september 2007 23:26 schreef wobbel het volgende:
1e fout: als ik eerst goede code doe, en dan foute laat ie de rijen van de goede code staan (mag dus niet)
2e fout: als ik meerdere malen een goede code invul blijven de rijen zich opstapelen
Dat lijkt me logisch als je nooit rijden verwijderd...
wobbelmaandag 10 september 2007 @ 09:39
quote:
Op maandag 10 september 2007 07:31 schreef SuperRembo het volgende:

[..]

Dat lijkt me logisch als je nooit rijden verwijderd...
maar hoe controleer ik of die rijen al bestaan dan? Ik weet niet waar ik moet beginnen en google geeft me alleen de code om de rijen te verwijderen...
SuperRembomaandag 10 september 2007 @ 11:58
Dat kan op allerlei manieren. Je kan de rows collection van de table gerbruiken, je kunt zelf bijhouden welke rows je hebt toegevoegd. Je kunt de rijen die je zelf toevoegt een class geven waar je ze aan kan herkennen. Als je altijd dezelfde velden laat zien dan kan je de velden leeg maken of verbergen, via ajax stuur je alleen de waarden van de velden, niet de hele HTML van de velden zelf.
PiRANiAmaandag 10 september 2007 @ 19:52
Ey,
Weet iemand waar dat gifje te vinden is uit firefox dat je te zien krijgt als je op het laden van het tebblad wacht?
Ik heb die nodig voor een ajax-site...
SuperRembomaandag 10 september 2007 @ 20:22
quote:
Op maandag 10 september 2007 19:52 schreef PiRANiA het volgende:
Ey,
Weet iemand waar dat gifje te vinden is uit firefox dat je te zien krijgt als je op het laden van het tebblad wacht?
Ik heb die nodig voor een ajax-site...
Bedoel je chrome/classic/skin/classic.jar/browser/Thrubber.gif?
wobbelmaandag 10 september 2007 @ 20:50
quote:
Op maandag 10 september 2007 20:22 schreef SuperRembo het volgende:

[..]

Bedoel je chrome/classic/skin/classic.jar/browser/Thrubber.gif?
hoe extract je die jar?
SuperRembomaandag 10 september 2007 @ 21:19
quote:
Op maandag 10 september 2007 20:50 schreef wobbel het volgende:

[..]

hoe extract je die jar?
Gewoon met winzip/winrar/...
PiRANiAdinsdag 11 september 2007 @ 07:50
www.ajaxload.info daar heb ik hem gevonden
handige site
wobbelvrijdag 14 september 2007 @ 23:29
Waarom werkt onderstaande NIET in firefox maar wel in IE7
(het gaat om het Ja / Nee verhaal op deze pagina -> http://www.dumpzooi.nl/intranet/

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
<script>
function Kiekeboe_a ()
{
   
   if ( document.getElementById ( 'Barcode' ).value == 'y' )
   {
      document.getElementById ( 'BarcodeVeld' ).className = 'BarcodeKiekeboe';
      document.getElementById ( 'KlantVeld' ).className = 'KlantVerstopt';
   }
   else
   {
   
      document.getElementById ( 'BarcodeVeld' ).className = 'BarcodeVerstopt';
      document.getElementById ( 'KlantVeld' ).className = 'KlantKiekeboe';
   }

   
}

function Kiekeboe_b ()
{
   
   if ( document.getElementById ( 'Barcode' ).value == 'n' )
   {
      document.getElementById ( 'BarcodeVeld' ).className = 'BarcodeKiekeboe';
      document.getElementById ( 'KlantVeld' ).className = 'KlantVerstopt';
   }
   else
   {
      document.getElementById ( 'BarcodeVeld' ).className = 'BarcodeVerstopt';
      document.getElementById ( 'KlantVeld' ).className = 'KlantKiekeboe';
   }
   
}
</script>


Met volgende HTML codes:

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
<div id="content">
<h2>Reparatie aanmelden</h2>
<form action="#SITE_URL/task_add.php" method="post" name="TaskAdd" id="TaskAdd">
<table width="100%" border="0" cellspacing="0" cellpadding="1">
  <tr>
    <td width="50%" align="left" valign="top">Bevat de PC een barcode?</td>
    <td width="50%" align="left" valign="top">Ja <input type="radio" name="Barcode" id="radio" value="y" onclick="Kiekeboe_a()" /> Nee <input type="radio" name="Barcode" id="radio2" value="n" onclick="Kiekeboe_b()" /></td>
  </tr>
  <tr id="BarcodeVeld" class="BarcodeVerstopt">
   <td colspan="2">
    
    <table width="100%" border="0" cellspacing="0" cellpadding="0" id="ReparatieTabel">
      <tr>
        <td width="50%" align="left" valign="top">  <img src="#SITE_URL/include/images/toptoright.gif" />Barcode</td>
        <td width="50%" align="left" valign="top"><input type="text" name="BarcodeInputVeld" id="BarcodeInputVeld" onBlur="BarcodeCheck(this.value)" style="border: solid #7f9db9 1px;" /> <img src="#SITE_URL/include/images/reload.gif" onclick="BarcodeCheck(document.getElementById ( 'BarcodeInputVeld' ).value)" /></td>
      </tr>
    </table>    
    
    </td>
  </tr>
  <tr id="KlantVeld" class="KlantVerstopt">
    <td colspan="2">
    
    <table width="100%" border="0" cellspacing="0" cellpadding="0">
      <tr>
        <td width="50%" align="left" valign="top">  <img src="#SITE_URL/include/images/toptoright.gif" />Naam</td>
        <td width="50%" align="left" valign="top"><input type="text" name="textfield2" id="textfield2" /></td>
      </tr>
      <tr>
        <td width="50%" align="left" valign="top">  <img src="#SITE_URL/include/images/toptoright.gif" />Telefoonnummer</td>
        <td width="50%" align="left" valign="top"><input type="text" name="textfield3" id="textfield3" /></td>
      </tr>
    </table>
    
    </td>
  </tr>
 <tr>
    <td align="left" valign="top" colspan="2"> </td>
  </tr>
  <tr>
    <td align="center" valign="top" colspan="2"><input type="image" name="imageField" src="#SITE_URL/include/images/buttons/task_toevoegen.jpg"></td>
  </tr>
</table>


<input type="hidden" name="sid" value="8f99d96f935336c7b8efb70944ff3105" /></form>
</div>
SuperRembovrijdag 14 september 2007 @ 23:38
Je hebt geen element met id="Barcode", wel met name="Barcode". getElementById("Barcode") levert dus niets op. Alleen IE zoekt bij getElementById niet alleen op id maar ook op name.

(Die fout had je makkelijk zelf kunnen vinden als je naar de foutmelding had gekeken die Firefox geeft)
wobbelzaterdag 15 september 2007 @ 19:11
quote:
Op vrijdag 14 september 2007 23:38 schreef SuperRembo het volgende:
Je hebt geen element met id="Barcode", wel met name="Barcode". getElementById("Barcode") levert dus niets op. Alleen IE zoekt bij getElementById niet alleen op id maar ook op name.

(Die fout had je makkelijk zelf kunnen vinden als je naar de foutmelding had gekeken die Firefox geeft)
FF gaf me niks of ik ben blind

maargoed, opgelost

BTW, kan dit niet VEEL korter?

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
function Kiekeboe_a ()
{
   
   if ( document.getElementById ( 'Barcode' ).value == 'y' )
   {
      document.getElementById ( 'BarcodeVeld' ).className = 'BarcodeKiekeboe';
      document.getElementById ( 'KlantVeld' ).className = 'KlantVerstopt';
   }
   else
   {
   
      document.getElementById ( 'BarcodeVeld' ).className = 'BarcodeVerstopt';
      document.getElementById ( 'KlantVeld' ).className = 'KlantKiekeboe';
   }

   
}

function Kiekeboe_b ()
{
   
   if ( document.getElementById ( 'Barcode' ).value == 'n' )
   {
      document.getElementById ( 'BarcodeVeld' ).className = 'BarcodeKiekeboe';
      document.getElementById ( 'KlantVeld' ).className = 'KlantVerstopt';
   }
   else
   {
      document.getElementById ( 'BarcodeVeld' ).className = 'BarcodeVerstopt';
      document.getElementById ( 'KlantVeld' ).className = 'KlantKiekeboe';
   }
   
}


[ Bericht 33% gewijzigd door wobbel op 15-09-2007 19:29:30 ]
SuperRembozaterdag 15 september 2007 @ 21:07
Beide functies doen eigenlijk hetzelfde: kijken naar de status van de radiobuttons en dan een van de twee velden tonen. Dus dat kan makkelijk in 1 functie.
wobbelzondag 16 september 2007 @ 14:22
quote:
Op zaterdag 15 september 2007 21:07 schreef SuperRembo het volgende:
Beide functies doen eigenlijk hetzelfde: kijken naar de status van de radiobuttons en dan een van de twee velden tonen. Dus dat kan makkelijk in 1 functie.
dan zou alleen onderstaande toch ook moeten werken? Dat ik bij beide radiobuttons zelfde functie aanroep? (alleen dat doet ie dus niet)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
function Kiekeboe_a ()
{
   
   if ( document.getElementById ( 'Barcode' ).value == 'y' )
   {
      document.getElementById ( 'BarcodeVeld' ).className = 'BarcodeKiekeboe';
      document.getElementById ( 'KlantVeld' ).className = 'KlantVerstopt';
   }
   else
   {
   
      document.getElementById ( 'BarcodeVeld' ).className = 'BarcodeVerstopt';
      document.getElementById ( 'KlantVeld' ).className = 'KlantKiekeboe';
   }

   
}
Litphozondag 16 september 2007 @ 14:29
quote:
Op zondag 16 september 2007 14:22 schreef wobbel het volgende:

[..]

dan zou alleen onderstaande toch ook moeten werken? Dat ik bij beide radiobuttons zelfde functie aanroep? (alleen dat doet ie dus niet)
[ code verwijderd ]
Ze doen hetzelfde, ze zijn niet exact hetzelfde (vergelijking met 'y' en 'n'). Doe de HTML erbij en het is, zoals SuperRembo zegt, makkelijk genoeg in 1 functie te plaatsen.
wobbelzondag 16 september 2007 @ 14:35
quote:
Op zondag 16 september 2007 14:29 schreef Litpho het volgende:

[..]

Ze doen hetzelfde, ze zijn niet exact hetzelfde (vergelijking met 'y' en 'n'). Doe de HTML erbij en het is, zoals SuperRembo zegt, makkelijk genoeg in 1 functie te plaatsen.
Jups, maar ik heb het al heel veel geprobeerd...maar JS is niet hetzelfde als PHP :')

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
<div id="content">
<h2>Reparatie aanmelden</h2>
<form action="#SITE_URL/task_add.php" method="post" name="TaskAdd" id="TaskAdd">
<table width="100%" border="0" cellspacing="0" cellpadding="1">
  <tr>
    <td width="50%" align="left" valign="top">Bevat de PC een barcode?</td>
    <td width="50%" align="left" valign="top">Ja <input type="radio" name="Barcode" id="radio" value="y" onclick="Kiekeboe_a()" /> Nee <input type="radio" name="Barcode" id="radio2" value="n" onclick="Kiekeboe_b()" /></td>
  </tr>
  <tr id="BarcodeVeld" class="BarcodeVerstopt">
   <td colspan="2">
    
    <table width="100%" border="0" cellspacing="0" cellpadding="0" id="ReparatieTabel">
      <tr>
        <td width="50%" align="left" valign="top">  <img src="#SITE_URL/include/images/toptoright.gif" />Barcode</td>
        <td width="50%" align="left" valign="top"><input type="text" name="BarcodeInputVeld" id="BarcodeInputVeld" onBlur="BarcodeCheck(this.value)" style="border: solid #7f9db9 1px;" /> <img src="#SITE_URL/include/images/reload.gif" onclick="BarcodeCheck(document.getElementById ( 'BarcodeInputVeld' ).value)" /></td>
      </tr>
    </table>    
    
    </td>
  </tr>
  <tr id="KlantVeld" class="KlantVerstopt">
    <td colspan="2">
    
    <table width="100%" border="0" cellspacing="0" cellpadding="0">
      <tr>
        <td width="50%" align="left" valign="top">  <img src="#SITE_URL/include/images/toptoright.gif" />Naam</td>
        <td width="50%" align="left" valign="top"><input type="text" name="textfield2" id="textfield2" /></td>
      </tr>
      <tr>
        <td width="50%" align="left" valign="top">  <img src="#SITE_URL/include/images/toptoright.gif" />Telefoonnummer</td>
        <td width="50%" align="left" valign="top"><input type="text" name="textfield3" id="textfield3" /></td>
      </tr>
    </table>
    
    </td>
  </tr>
 <tr>
    <td align="left" valign="top" colspan="2"> </td>
  </tr>
  <tr>
    <td align="center" valign="top" colspan="2"><input type="image" name="imageField" src="#SITE_URL/include/images/buttons/task_toevoegen.jpg"></td>
  </tr>
</table>


<input type="hidden" name="sid" value="8f99d96f935336c7b8efb70944ff3105" /></form>
</div>
SuperRembozondag 16 september 2007 @ 14:42
quote:
Op zondag 16 september 2007 14:22 schreef wobbel het volgende:

[..]

dan zou alleen onderstaande toch ook moeten werken? Dat ik bij beide radiobuttons zelfde functie aanroep? (alleen dat doet ie dus niet)
[ code verwijderd ]
Je moet kijken naar welke radiobutton geselecteerd is, dat kan met de checked property. Je moet niet kijken naar de value van een input-radio element, want die verandert niet.
Litphozondag 16 september 2007 @ 14:50
quote:
Op zondag 16 september 2007 14:42 schreef SuperRembo het volgende:

[..]

Je moet kijken naar welke radiobutton geselecteerd is, dat kan met de checked property. Je moet niet kijken naar de value van een input-radio element, want die verandert niet.
Tenzij je kiekeboe aanroept met this als parameter, dan krijg je wel de waarde mee van de specifieke radiobutton (ipv de geselecteerde waarde van de radiobuttongroup) en bij radiobuttons mag je er in een onclick vanuitgaan dat hij checked is.

1
2
3
4
5
6
7
8
9
10
11
12
function Kiekeboe(obj) {
   if ( obj.value == 'y' )
   {
      document.getElementById ( 'BarcodeVeld' ).className = 'BarcodeKiekeboe';
      document.getElementById ( 'KlantVeld' ).className = 'KlantVerstopt';
   }
   else
   {
      document.getElementById ( 'BarcodeVeld' ).className = 'BarcodeVerstopt';
      document.getElementById ( 'KlantVeld' ).className = 'KlantKiekeboe';
   }
}

1
2
3
4
<td width="50%" align="left" valign="top">
  Ja <input type="radio" name="Barcode" id="radio" value="y" onclick="Kiekeboe(this)" />
  Nee <input type="radio" name="Barcode" id="radio2" value="n" onclick="Kiekeboe(this)" />
</td>
wobbelzondag 16 september 2007 @ 17:16
quote:
Op zondag 16 september 2007 14:50 schreef Litpho het volgende:

[..]

Tenzij je kiekeboe aanroept met this als parameter, dan krijg je wel de waarde mee van de specifieke radiobutton (ipv de geselecteerde waarde van de radiobuttongroup) en bij radiobuttons mag je er in een onclick vanuitgaan dat hij checked is.
[ code verwijderd ]


[ code verwijderd ]
Kijk eens aan, daar heb ik wat aan. Code + uitleg
wobbelzondag 16 september 2007 @ 18:17
quote:
Op maandag 10 september 2007 11:58 schreef SuperRembo het volgende:
Dat kan op allerlei manieren. Je kan de rows collection van de table gerbruiken, je kunt zelf bijhouden welke rows je hebt toegevoegd. Je kunt de rijen die je zelf toevoegt een class geven waar je ze aan kan herkennen. Als je altijd dezelfde velden laat zien dan kan je de velden leeg maken of verbergen, via ajax stuur je alleen de waarden van de velden, niet de hele HTML van de velden zelf.
als ik dan een row toevoeg met JS, hoe geef ik dan een class mee? en dan nog, hoe verwijder ik dan een rij met een bepaalde class?

Ik heb momenteel de onderstaande code om rijen in te voegen:

1
2
3
4
5
6
7
8
9
10
function insRow (row, value1, value2)
{

   var x         =   document.getElementById('ReparatieTabel').insertRow(row)
   var y         =   x.insertCell(0)
   var z         =   x.insertCell(1)
   y.innerHTML      =   value1
   z.innerHTML      =   value2

}
CraZaaymaandag 17 september 2007 @ 09:35
quote:
Op zondag 16 september 2007 18:17 schreef wobbel het volgende:

[..]

als ik dan een row toevoeg met JS, hoe geef ik dan een class mee?
Je maakt me niet wijs dat dit niet binnen 5 seconden te vinden is op Google:

1element.className = 'myclass';
wobbelmaandag 17 september 2007 @ 11:47
quote:
Op maandag 17 september 2007 09:35 schreef CraZaay het volgende:

[..]

Je maakt me niet wijs dat dit niet binnen 5 seconden te vinden is op Google:
[ code verwijderd ]
waar vind je dat allemaal? Ik zou namelijk ook graag willen weten hoe je de id="" instelt van een row die je toevoegt en ik ben nu dus serieus al aan het googlen op allerlei termen
SuperRembomaandag 17 september 2007 @ 13:37
id property al geprobeerd?
CraZaaymaandag 17 september 2007 @ 17:39
quote:
Op maandag 17 september 2007 13:37 schreef SuperRembo het volgende:
id property al geprobeerd?


Wat hij zegt:

1element.id = 'myId';
SlimShadywoensdag 19 september 2007 @ 13:35
hoe kan je uitrekenen hoelang een functie erover doet? graag in milliseconden.
ah. na een half uur zoeken toch gevonden:
http://www.peachpit.com/articles/article.aspx?p=31567&seqNum=2

[ Bericht 58% gewijzigd door SlimShady op 19-09-2007 13:48:13 ]
PiRANiAvrijdag 21 september 2007 @ 12:22
Hoe kan ik wat ik van mijn AJAX terugkrijg als script laten uitvoeren?
Litphovrijdag 21 september 2007 @ 12:27
quote:
Op vrijdag 21 september 2007 12:22 schreef PiRANiA het volgende:
Hoe kan ik wat ik van mijn AJAX terugkrijg als script laten uitvoeren?
eval().
PiRANiAvrijdag 21 september 2007 @ 16:17
quote:
Op vrijdag 21 september 2007 12:27 schreef Litpho het volgende:

[..]

eval().
if(xmlHttp.readyState==4)
{
eval(xmlHttp.responseText);
}
?
CraZaayvrijdag 21 september 2007 @ 16:54
quote:
Op vrijdag 21 september 2007 12:22 schreef PiRANiA het volgende:
Hoe kan ik wat ik van mijn AJAX terugkrijg als script laten uitvoeren?
eval idd, of gewoon lekker een framework gebruiken. Ik blijf me afvragen waarom iedereen steeds het wiel opnieuw wil uitvinden.
wobbelvrijdag 21 september 2007 @ 20:23
quote:
Op vrijdag 21 september 2007 12:22 schreef PiRANiA het volgende:
Hoe kan ik wat ik van mijn AJAX terugkrijg als script laten uitvoeren?
idd met eval ();

let wel op dat je tekst ook moet parsen met document.write ();
SuperRembovrijdag 21 september 2007 @ 20:45
quote:
Op vrijdag 21 september 2007 20:23 schreef wobbel het volgende:
let wel op dat je tekst ook moet parsen met document.write ();
Wat bedoel je?
wobbelvrijdag 21 september 2007 @ 21:14
quote:
Op vrijdag 21 september 2007 20:45 schreef SuperRembo het volgende:

[..]

Wat bedoel je?
stel je ajax request roept check.php aan.
check.php geeft een waarde terug die je op je scherm uitpoept. (bijv "Henk Jan")
als je dat nu alsnog wilt uitpoepen moet je er het volgende van maken: document.write ('Henk Jan');

omdat eval ( ) "Henk Jan" als een commando of functie gaat inzien
SuperRembovrijdag 21 september 2007 @ 21:26
Ja, dat spreekt voor zich. "Henk Jan" is geen javascript dus dat kan je niet als javascript uitvoeren.

document.write is soooooo 20th centrury.
Chandlerwoensdag 26 september 2007 @ 00:05
Ik zit met een vraag omdat ik iets niet voor elkaar krijg.

Ik heb een script voor ajax search suggest gedownloaded en wilde deze aanpassen zodat het script meerdere search boxjes aankan dus niet voor ieder boxje een appart script hoef te schrijven.

http://www.DynamicAJAX.com

Nu heb ik de html en javascript als volgt aangepast

HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<form id="frmSearch" action="">
    <input type="text" id="field1_txtSearch" name="field1_txtSearch" alt="Search Criteria" onkeyup="searchSuggest('field1');" autocomplete="off" />
    <input type="submit" id="cmdSearch" name="cmdSearch" value="Search" alt="Run Search" /><br />
    <div id="field1_search_suggest"></div>
<input type="hidden" name="sid" value="2fe620ab83006b3ecb3f005b830275d4" /></form>
<form id="frmSearch" action="">
    <input type="text" id="field2_txtSearch" name="field2_txtSearch" alt="Search Criteria" onkeyup="searchSuggest('field2');" autocomplete="off" />
    <input type="submit" id="cmdSearch" name="cmdSearch" value="Search" alt="Run Search" /><br />
    <div id="field2_search_suggest"></div>
<input type="hidden" name="sid" value="2fe620ab83006b3ecb3f005b830275d4" /></form>
<form id="frmSearch" action="">
    <input type="text" id="field3_txtSearch" name="field3_txtSearch" alt="Search Criteria" onkeyup="searchSuggest('field3');" autocomplete="off" />
    <input type="submit" id="cmdSearch" name="cmdSearch" value="Search" alt="Run Search" /><br />
    <div id="field3_search_suggest"></div>
<input type="hidden" name="sid" value="2fe620ab83006b3ecb3f005b830275d4" /></form>
<form id="frmSearch" action="">
    <input type="text" id="field4_txtSearch" name="field4_txtSearch" alt="Search Criteria" onkeyup="searchSuggest('field4');" autocomplete="off" />
    <input type="submit" id="cmdSearch" name="cmdSearch" value="Search" alt="Run Search" /><br />
    <div id="field4_search_suggest"></div>
>/form>


JS
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
var searchReq = create_http_object(); // (eigen werkende xmlhttp func)

//Called from keyup on the search textbox.
//Starts the AJAX request.
function searchSuggest(field) 
{
    if (searchReq.readyState == 4 || searchReq.readyState == 0) 
    {
        var str = escape(document.getElementById(field + '_txtSearch').value);
        searchReq.open("GET", 'searchSuggest.php?search=' + str, true);
        searchReq.onreadystatechange = handleSearchSuggest(field); 
        searchReq.send(null);
    }      
}

//Called when the AJAX response is returned.
function handleSearchSuggest(field) 
{
    if (searchReq.readyState == 4) 
    {
        var ss = document.getElementById(field + '_search_suggest')
        ss.innerHTML = '';
        var str = searchReq.responseText.split("n");

        for (i = 0; i < str.length - 1; i++) 
        {
            //Build our element string.  This is cleaner using the DOM, but
            //IE doesn't support dynamically added attributes.
            var suggest = '<div onmouseover="javascript:suggestOver(this, '' + field + '');" ';
               suggest += 'onmouseout="javascript:suggestOut(this, '' + field + '');" ';
               suggest += 'onclick="javascript:setSearch(this.innerHTML, '' + field + '');" ';
               suggest += 'class="suggest_link">' + str[i] + '</div>';

            ss.innerHTML += suggest;
        }
    }
}

//Mouse over function
function suggestOver(div_value, field) 
{
    div_value.className = 'suggest_link_over';
}
//Mouse out function
function suggestOut(div_value, field) 
{
    div_value.className = 'suggest_link';
}
//Click function
function setSearch(value, field) 
{
    document.getElementById(field + '_txtSearch').value = value;
    document.getElementById(field + '_search_suggest').innerHTML = '';
}


Helaas krijg ik continue fouten op de eerste searchReq.readyState. Alleen zie ik niet waar deze fout in zit? iemand die het ziet? of een eventuele oplossing heeft?

[ Bericht 35% gewijzigd door Chandler op 26-09-2007 00:06:13 (ubb foutje) ]
SuperRembowoensdag 26 september 2007 @ 00:37
Deze regel is fout
1    searchReq.onreadystatechange = handleSearchSuggest(field); 


onreadystatechange moet een functie zijn die kan worden uitgevoerd op het moment dat de readystate verandert. Jij voert meteen handleSearchSuggest(field) uit (dan is send() nog niet eens uitgevoerd), waardoor searchReq.onreadystatechange de waarde undefined krijgt.

Eenvoudigste oplossing:
1    searchReq.onreadystatechange = function(){ handleSearchSuggest(field);} 


Dit wordt vaak fout gedaan :X
Litphowoensdag 26 september 2007 @ 07:54
quote:
Op woensdag 26 september 2007 00:37 schreef SuperRembo het volgende:
Dit wordt vaak fout gedaan
Het wachten is nu op Crazaay die je komt vertellen dat je gewoon een framework had moeten gebruiken .
Chandlerwoensdag 26 september 2007 @ 08:21
Tnx SR en nee ik ga geen framework gebruiken, wil lekker zelf ontdekken hoe zaken werken!
Chandlerwoensdag 26 september 2007 @ 13:18
Volgende vraag dan maar quote uit CSS topic

Een voorbeeld.

1
2
3
4
<form>
Titel: <input type="text" name="woei" onClick="functie();"><br />
<div id="zoekveld"></div>
<input type="hidden" name="sid" value="2fe620ab83006b3ecb3f005b830275d4" /><input type="hidden" name="sid" value="2fe620ab83006b3ecb3f005b830275d4" /><input type="hidden" name="sid" value="2fe620ab83006b3ecb3f005b830275d4" /><input type="hidden" name="sid" value="2fe620ab83006b3ecb3f005b830275d4" /></form>


Nu is de begin positie van 'zoekveld' goed hoor, maar wil dat deze over de onderstaande velden valt dus niet de pagina verbreed maar eeder 'zweeft' oid..

Is de inhoud leeg? dan zie je niets
Is de inhoud gevuld dan zie ik deze div container over andere velden heen (zoals een menu oid) hoe krijg ik dat voor elkaar? iemand een voorbeeld?

-edit-

vervolg,

Heb nu het volgende aangepast en krijg nu de box achter de onderliggende elementen/teksten

1
2
3
4
5
6
7
                        .suggest_box {
                            position: relative;
                            width: 250px; 
                            border: 1px solid black; 
                            display: none;
                            z-index: 999;
                        }      


HTML
1
2
3
4
5
<form id="frmSearch" action="" style="position: absolute; z-index: 4;">
    Gebruiker: <input type="text" id="field4_txtSearch" name="field4_txtSearch" alt="Search Criteria" onkeyup="searchSuggest('username', 'field4');" autocomplete="off" />
    <input type="submit" id="cmdSearch" name="cmdSearch" value="Search" alt="Run Search" /><br />
    <div id="field4_search_suggest" class="suggest_box"></div>
<input type="hidden" name="sid" value="2fe620ab83006b3ecb3f005b830275d4" /></form>


maar de tekst er achter is ook niet alls dit is nog zonder JS ed. Heb nu wel een get en set Position functie gevonden maar hoef daar helaas nog niets mee te doen!

[ Bericht 33% gewijzigd door Chandler op 26-09-2007 14:23:24 ]
wobbelmaandag 8 oktober 2007 @ 11:42
Ik heb ergens op de pagina een <input type="text" name="henk" id="henk" value="onbekend"> staan.

Hoe kan ik nou ergens verderop de de pagina dmv een functie die waarde ("onbekend") opvragen?

1
2
3
4
5
6
function GetValue ( field )
{

   var obj = document.getElementById(field)

}


verder dan dit kom ik niet :P
PiRANiAmaandag 8 oktober 2007 @ 12:41
quote:
Op maandag 8 oktober 2007 11:42 schreef wobbel het volgende:
Ik heb ergens op de pagina een <input type="text" name="henk" id="henk" value="onbekend"> staan.

Hoe kan ik nou ergens verderop de de pagina dmv een functie die waarde ("onbekend") opvragen?
[ code verwijderd ]

verder dan dit kom ik niet
document.getElementById('henk').value
?
markiemarkwoensdag 10 oktober 2007 @ 14:17
ff een probleempje...
ik ben bezig om een systeempje te maken waarbij details ingevoerd kunnen worden door middel van een uitklapscherm. heb ik op deze manier gemaakt...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
   
function showWorkDetailsPerson(id, pauzes){
   // alle velden tonen
   for(i=1; i<=12; i++){
      veld = document.getElementById('rij_'+i+'_nummer_'+id);
      veld.style.display = 'table-cell';
   }
   
   // alle p velden tonen
   for (i=1; i<=pauzes; i++){
      if (i == 1){
         veld = document.getElementById('rij_'+id+'_'+i);   
         veld.style.display = 'table-cell';
         veld = document.getElementById('rij1_'+id+'_'+i);   
         veld.style.display = 'table-cell';
      }else{
         veld = document.getElementById('rij_'+id+'_'+i);   
         veld.style.display = 'none';
         veld = document.getElementById('rij1_'+id+'_'+i);   
         veld.style.display = 'none';
      }
   }
}


in firefox werkt het goed, in ie krijg ik een fout melding... heel vaag..
de fout zit in lijn 6..
quote:
Error: Could not get the display property. Invalid argument.
Code: 0
wat doe ik verkeerd?
PiRANiAwoensdag 10 oktober 2007 @ 16:32
quote:
Op woensdag 10 oktober 2007 14:17 schreef markiemark het volgende:
ff een probleempje...
ik ben bezig om een systeempje te maken waarbij details ingevoerd kunnen worden door middel van een uitklapscherm. heb ik op deze manier gemaakt...
[ code verwijderd ]

in firefox werkt het goed, in ie krijg ik een fout melding... heel vaag..
de fout zit in lijn 6..
[..]

wat doe ik verkeerd?
document.getElementById('rij_'+i+'_nummer_'+id).style.display = 'table-cell';

die?
of

veld ='document.getElementById(rij_'+i+'_nummer_'+id)';
veld.style.display = 'table-cell';

denk ik hoor
SuperRembowoensdag 10 oktober 2007 @ 17:25
Het zou best eens kunnen dat IE display: table-cell niet kent.
In plaats van style.display = 'table-cell' kan je waarschijnlijk beter style.display = '' gebruiken. Dat zorgt er voor dat de default waarde wordt gebruikt.
Vlekdonderdag 11 oktober 2007 @ 07:26
Ik heb twee multiselects naast elkaar, waarmee waarden van de ene naar de andere multiselectbox gezet kunnen worden. Dit werkt allemaal prima, als dan de rechterkant geselecteerd is, word ook alles keurig uitgelezen.

Maar nou is het de bedoeling dat als er iets in de rechter multiselect staat, hij bij onsubmit gelijk die hele multiselect selecteerd, zonder dat je dat zelf nog eens hoeft te doen. k heb al een aantal scripts geprobeerd, maar tot nog toe geen succes. Het script mag evt ook werken met een checkbox, waarbij je aangeeft of alles geselecteerd word.
markiemarkdonderdag 11 oktober 2007 @ 10:15
quote:
Op woensdag 10 oktober 2007 17:25 schreef SuperRembo het volgende:
Het zou best eens kunnen dat IE display: table-cell niet kent.
In plaats van style.display = 'table-cell' kan je waarschijnlijk beter style.display = '' gebruiken. Dat zorgt er voor dat de default waarde wordt gebruikt.
Ik vind jou lievv..

Dank je wel! Het werkt!
SuperRembodonderdag 11 oktober 2007 @ 11:48
quote:
Op donderdag 11 oktober 2007 07:26 schreef Vlek het volgende:
Maar nou is het de bedoeling dat als er iets in de rechter multiselect staat, hij bij onsubmit gelijk die hele multiselect selecteerd, zonder dat je dat zelf nog eens hoeft te doen. k heb al een aantal scripts geprobeerd, maar tot nog toe geen succes. Het script mag evt ook werken met een checkbox, waarbij je aangeeft of alles geselecteerd word.
Het enige wat je hoeft te doen is door alle options van de select lopen en voor elke option de selected property op true zetten.
markiemarkdonderdag 11 oktober 2007 @ 12:42
quote:
Op donderdag 11 oktober 2007 07:26 schreef Vlek het volgende:
Ik heb twee multiselects naast elkaar, waarmee waarden van de ene naar de andere multiselectbox gezet kunnen worden. Dit werkt allemaal prima, als dan de rechterkant geselecteerd is, word ook alles keurig uitgelezen.

Maar nou is het de bedoeling dat als er iets in de rechter multiselect staat, hij bij onsubmit gelijk die hele multiselect selecteerd, zonder dat je dat zelf nog eens hoeft te doen. k heb al een aantal scripts geprobeerd, maar tot nog toe geen succes. Het script mag evt ook werken met een checkbox, waarbij je aangeeft of alles geselecteerd word.
ik heb ooit dit geschreven:
1
2
3
4
5
6
7
function selectAll()
{
   for(i=0; i<document.form1.selectie.options.length; i++)
   {
      document.form1.selectie.options[i].selected = true;   
   }
}


En dat werkt..
PiRANiAdonderdag 18 oktober 2007 @ 21:27
document.getElementById('buttonff01cf50fd6b21093bfb5e7d1827b92f').disabled='disabled';

staat ergens in mijn script, maar hoe krijg ik die knop nu weer aan?
SuperRembodonderdag 18 oktober 2007 @ 22:02
De disabled property is eigenlijk een boolean, je had 'm dus eigenlijk op true moeten zetten. Om 'm weer te enabelen zet je disbled op false.
super-muffindonderdag 18 oktober 2007 @ 22:28
Wat een id trouwens
markiemarkdonderdag 18 oktober 2007 @ 23:20
quote:
Op donderdag 18 oktober 2007 22:28 schreef super-muffin het volgende:
Wat een id trouwens
hehe idd.. zou wel automatisch gegenereerd zijn adhv session id of zo
PiRANiAvrijdag 19 oktober 2007 @ 07:50
quote:
Op donderdag 18 oktober 2007 23:20 schreef markiemark het volgende:

[..]

hehe idd.. zou wel automatisch gegenereerd zijn adhv session id of zo
true
quote:
Op donderdag 18 oktober 2007 22:02 schreef SuperRembo het volgende:
De disabled property is eigenlijk een boolean, je had 'm dus eigenlijk op true moeten zetten. Om 'm weer te enabelen zet je disbled op false.
ga ik proberen, tnx
Darkomenmaandag 22 oktober 2007 @ 22:26
nevermind

[ Bericht 92% gewijzigd door Darkomen op 22-10-2007 22:33:38 ]
Chandlerwoensdag 7 november 2007 @ 11:09
Ik snap iets niet

1
2
3
4
5
function showReact()
{
    x = document.getElementById('react');
    (x.style.display == 'block') ? x.style.display = 'none' : x.style.display = 'block';
}


werkt maar de volgende code weer niet :?

1
2
3
4
5
function showReact()
{
    x = document.getElementById('react').style.display;
    (x == 'block') ? x = 'none' : x = 'block';
}


Waarom werkt de laatste code niet? kan iemand dat uitleggen? :D
SlimShadywoensdag 7 november 2007 @ 11:49
in de bovenste is x een verwijzing naar het element 'react'.
bij de onderste code staat x voor de text 'block' of 'none'.
dus het verandert alleen de inhoud van x, ipv wat jij verwacht: het element>attribuut style.display.
Chandlerwoensdag 7 november 2007 @ 12:00
Ah duidelijk, ik dacht dat x dan het gehele element mee zou nemen maar dat is dus niet zo weer wat geleerd
CraZaaywoensdag 7 november 2007 @ 12:32
quote:
Op woensdag 7 november 2007 12:00 schreef Chandler het volgende:
Ah duidelijk, ik dacht dat x dan het gehele element mee zou nemen maar dat is dus niet zo weer wat geleerd
Dat element "meenemen" wil je juist niet. Je wilt de referentie naar het element gebruiken.
Chandlerwoensdag 7 november 2007 @ 13:12
Daar doelde ik al op CraZaay
SuperRembowoensdag 7 november 2007 @ 13:28
Maar dit kan wel:

1
2
3
4
5
function showReact()
{
    x = document.getElementById('react').style;
    (x.display == 'block') ? x.display = 'none' : x.display = 'block';
}


Ik zou 't trouwens zo doen
1    x.display = (x.display == 'none') ? '' : 'none';


Dan maak je beter gebruik van de ?: operator en op deze manier werkt het ook bij bijv een span en table element.
Chandlervrijdag 9 november 2007 @ 11:10
Ik heb een vraagje over een stukje script van mij. Het volgende script moet van een XML resultaat een directorie structuur kunnen opbouwen, echter krijg ik na uitlezen gelijk de volgende error

XML data
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 <?xml version="1.0" encoding="iso-8859-1" ?> 
- <nodes>
- <node>
  <name>Documents and Settings</name> 
  <id>C:/Documents and Settings</id> 
  <items>1</items> 
  </node>
- <node>
  <name>Games</name> 
  <id>C:/Games</id> 
  <items>1</items> 
  </node>
- <node>
  <name>MyServer</name> 
  <id>C:/MyServer</id> 
  <items>1</items> etcetcetc


JS script
1
2
3
4
5
6
7
8
9
<?php
        
/* check if HTTP Response Code is 200 (resource found) */
        
if(request.status == 200)
        {
            
/* get data as xml and select only nodes */
            
request.responseXML.getElementsByTagName('nodes')[0].getElementsByTagName('node'); // <-- error
            
x.length;
            
/* no nodes in response - go out from function */
?>


Error melding in FF
1
2
3
Error: [Exception... "Component returned failure code: 0x80004003 (NS_ERROR_INVALID_POINTER) [nsIDOMHTMLDivElement.removeChild]"  nsresult: "0x80004003 (NS_ERROR_INVALID_POINTER)"  location: "JS frame :: etc/js/tree.js :: completeRequest :: line 118"  data: no]
Source File: etc/js/tree.js
Line: 118


Error melding in IE
1request.responseXML.getElementsByTagName('nodes')[0] is leeg of geen object


Nu is de vraag; waar ga ik de fout in? :D
SuperRembovrijdag 9 november 2007 @ 13:02
De foutmelding geeft aan dat er geen "nodes" element bestaat.
Krijg je wel echt xml binnen?
Wat geeft request.responseXML.childNodes.length of request.responseXML.childNodes[0]?

getElementsByTagName geeft alle nodes met de gegeven naam, dus ook dieper gelegen nodes.
x = request.responseXML.getElementsByTagName('nodes')[0].getElementsByTagName('node');
is in dit geval dus hetzelfde als
x = request.responseXML.getElementsByTagName('node');
Chandlervrijdag 9 november 2007 @ 14:47
quote:
Op vrijdag 9 november 2007 13:02 schreef SuperRembo het volgende:
De foutmelding geeft aan dat er geen "nodes" element bestaat.
Krijg je wel echt xml binnen?
Wat geeft request.responseXML.childNodes.length of request.responseXML.childNodes[0]?

getElementsByTagName geeft alle nodes met de gegeven naam, dus ook dieper gelegen nodes.
x = request.responseXML.getElementsByTagName('nodes')[0].getElementsByTagName('node');
is in dit geval dus hetzelfde als
x = request.responseXML.getElementsByTagName('node');
alert(request.responseXML) geeft het XML voorbeeld + natuurlijk wat meer data
request.responseXML.childNodes.length geeft 0
request.responseXML.childNodes[0] geeft null

Jou manier :
request.responseXML.getElementsByTagName('node') geeft een [object]
maar dan krijg ik de volgende error op:

1
2
3
4
5
6
7
8
9
            if(!y)
            {
                with(parent.getElementsByTagName('p')[0]) // <-- error
                {
                    removeChild(lastChild);
                    appendChild(document.createTextNode('No contents found...'));
                }
                return false;
            }
SuperRembovrijdag 9 november 2007 @ 15:49
quote:
Op vrijdag 9 november 2007 14:47 schreef Chandler het volgende:
[..]
alert(request.responseXML) geeft het XML voorbeeld + natuurlijk wat meer data
request.responseXML.childNodes.length geeft 0
Dat is vreemd. Stuur je wel een text/xml header? Wat geeft request.getResponseHeader("Content-Type")?
PiRANiAvrijdag 9 november 2007 @ 16:42
Wie met ienternet explorer snapt wat het hier fout gaat:
http://roostertv.kexx.net/ (onderin)
in FF werkt het wel...
(gaat over AJAX...)
Chandlervrijdag 9 november 2007 @ 17:36
quote:
Op vrijdag 9 november 2007 15:49 schreef SuperRembo het volgende:

[..]

Dat is vreemd. Stuur je wel een text/xml header? Wat geeft request.getResponseHeader("Content-Type")?
Zo verstuur ik het

1
2
3
4
5
6
header( "Expires: Mon, 26 Jul 1997 05:00:00 GMT" );  // disable IE caching
header( "Last-Modified: " . gmdate( "D, d M Y H:i:s" ) . " GMT" );
header( "Cache-Control: no-cache, must-revalidate" );
header( "Pragma: no-cache" );

echo('<'.'?xml version="1.0" encoding="iso-8859-1" ?'.'>'."\r\n");


en die request.getResponseHeader("Content-Type")? geeft idd text/html

Hoe is dat mogelijk?

Nu krijg ik text/xml door toevoeging van

1header( "Content-Type: text/xml");


maar dan krijg ik weer een andere error

1
2
3
Regel: 122
Teken: 13
Fout: Type komt niet overeen


Regel 122 is als volgt.

1            parent.appendChild(e['ul']);




en het leuke is dat FF het weer anders aangeeft

1
2
3
Error: [Exception... "Component returned failure code: 0x80004003 (NS_ERROR_INVALID_POINTER) [nsIDOMHTMLDivElement.removeChild]"  nsresult: "0x80004003 (NS_ERROR_INVALID_POINTER)"  location: "JS frame :: etc/js/tree.js :: completeRequest :: line 121"  data: no]
Source File: etc/js/tree.js
Line: 121


regels 118 t/m 123
1
2
3
4
5
6
                }
                e['ul'].appendChild(e['li']);
            }
            parent.removeChild(parent.getElementsByTagName('p')[0]); <-- 121
            parent.appendChild(e['ul']); <-- 122
        }


[ Bericht 23% gewijzigd door Chandler op 09-11-2007 17:41:27 ]
Chandlervrijdag 9 november 2007 @ 17:46
quote:
Op vrijdag 9 november 2007 16:42 schreef PiRANiA het volgende:
Wie met ienternet explorer snapt wat het hier fout gaat:
http://roostertv.kexx.net/ (onderin)
in FF werkt het wel...
(gaat over AJAX...)
AJAX?

javascript:document.getElementById('adje') waar staat een div met adje?

Je kunt trouwens beter die onload (imho) gewoon onderaan het script zetten.
SuperRembovrijdag 9 november 2007 @ 18:39
quote:
Op vrijdag 9 november 2007 17:36 schreef Chandler het volgende:

[..]

Zo verstuur ik het
[ code verwijderd ]

en die request.getResponseHeader("Content-Type")? geeft idd text/html

Hoe is dat mogelijk?
Dat is de default header die php stuurt.
quote:
maar dan krijg ik weer een andere error
Bestaat er wel een element <p>? Is de variable die je propeert te appenden wel een element?

Waarom gebruik je geen JSON, dat werkt zoveel makkelijker in javascript?
quote:
Op vrijdag 9 november 2007 17:46 schreef Chandler het volgende:
Je kunt trouwens beter die onload (imho) gewoon onderaan het script zetten.
Ben ik niet met je eens. De toevoeging "javascript:" in onload en onclick is wel overbodig.
PiRANiA, wat wil je bereiken met het veranderen van de class als je de pagina sluit? :S En waarom zet je niet meteen de goede classname met php?
Chandlervrijdag 9 november 2007 @ 19:36
Sr je hebt een PM
CraZaayzaterdag 10 november 2007 @ 09:16
quote:
Op vrijdag 9 november 2007 17:46 schreef Chandler het volgende:

Je kunt trouwens beter die onload (imho) gewoon onderaan het script zetten.
Nee, want dat wordt 'ie al uitgevoerd voor de HTML geladen is en de DOM nog niet compleet is. Wél zou het netter zijn om een onload event listener toe te voegen via het script imo.

Ander alternatief, en dan werkt Chandlers suggestie wel, is om de JS includes helemaal aan het einde van je HTML te zetten. Dat komt de performance ook ten goede (normaal gebruikt een browser 2 "download threads", maar voor JS maar 1, als je meerdere includes bovenaan hebt staan gaat 'ie die dus 1 voor 1 afwerken (downloaden + parsen) voordat 'ie aan de HTML begint). Maar da's meer van toepassing op high traffic site's wellicht.
Skorpijazondag 11 november 2007 @ 00:17
Volgens mij niet echt een dummy vraag...

Wanneer ik op een plaatje klik, en vervolgens (met de linkermuisknop nog ingedrukt) de cursor begin te slepen, veranderd de cursor in een 'stop' teken. Is hier iets tegen te doen?

Ik wil dat de cursor gewoon als pointer blijft.
Chandlerzondag 11 november 2007 @ 02:38
Denk het niet, dit is iets wat niet te defenieren is zal ongetwijfeld anders zijn in IE dan FF
PiRANiAzondag 11 november 2007 @ 02:38
quote:
Op zondag 11 november 2007 00:17 schreef Skorpija het volgende:
Volgens mij niet echt een dummy vraag...

Wanneer ik op een plaatje klik, en vervolgens (met de linkermuisknop nog ingedrukt) de cursor begin te slepen, veranderd de cursor in een 'stop' teken. Is hier iets tegen te doen?

Ik wil dat de cursor gewoon als pointer blijft.
iets van image onmove="corsor:default" .
Zoiets?
SuperRembozondag 11 november 2007 @ 12:23
quote:
Op zondag 11 november 2007 00:17 schreef Skorpija het volgende:
Wanneer ik op een plaatje klik, en vervolgens (met de linkermuisknop nog ingedrukt) de cursor begin te slepen, veranderd de cursor in een 'stop' teken. Is hier iets tegen te doen?


Bij dit soort vragen vraag ik me altijd af waarom je zoiets zou willen.
Skorpijazondag 11 november 2007 @ 13:30
quote:
Op zondag 11 november 2007 12:23 schreef SuperRembo het volgende:

[..]



Bij dit soort vragen vraag ik me altijd af waarom je zoiets zou willen.
Ik wil via javascript over een plaatje 'tekenen'. Maar als ik dus begin met tekenen, veranderd de cursor in een 'not-allowed' cursor.
CraZaayzondag 11 november 2007 @ 14:14
quote:
Op zondag 11 november 2007 13:30 schreef Skorpija het volgende:

[..]

Ik wil via javascript over een plaatje 'tekenen'. Maar als ik dus begin met tekenen, veranderd de cursor in een 'not-allowed' cursor.
Leg die eens even uit als je wilt "Over een plaatje tekenen" is niet echt standaard browsergedrag, dus daar kan ik me weinig bij voorstellen.
Skorpijazondag 11 november 2007 @ 14:38
Nou, eigenlijk heel simpel:

Men upload een plaatje, klikt op een knopje van een 'kwastje' en vervolgens kan men op het plaatje 'free hand' tekenen. Dat natuurlijk ook weer d.m.v. javascript.
Maar ik heb een oplossing gevonden denk ik. Ik zet onder mijn cursor een klein transparant plaatje (10x10) welke weer bovenop het ge-uploade plaatje ligt. Echter dat kleine plaatje maak ik draggable. Zo denkt de cursor dat hij eigenlijk een plaatje sleept (dus geen 'not-allowed' cursor) maar laat ik daaronder weer gewoon tekenen
CraZaayzondag 11 november 2007 @ 19:26
Of een div over de afbeelding leggen met een transparante gif als achtergrond, gaat wellicht ook wel werken.
Flaccidwoensdag 14 november 2007 @ 16:49
Ik heb een functie, en ik wil die op een manier aanroepen.

1document.write('henk'+time()+'piet')


maar daar komtuit

17henkpiet


hoe komt dat? (time is nu even 7). waarom komt er niet henk7piet uit?
super-muffinwoensdag 14 november 2007 @ 18:10
Is Time geen gereserveerde naam in Javascript?
en returnt die functie wel wat?
Flaccidwoensdag 14 november 2007 @ 18:33
quote:
Op woensdag 14 november 2007 18:10 schreef super-muffin het volgende:
Is Time geen gereserveerde naam in Javascript?
en returnt die functie wel wat?
ja
SuperRembowoensdag 14 november 2007 @ 18:36
1
2
function time() { return '7'; }
document.write('henk'+time()+'piet');


Dit geeft toch echt 'henk7piet'.
ErikNvrijdag 16 november 2007 @ 01:31
quote:
Op zondag 11 november 2007 13:30 schreef Skorpija het volgende:

[..]

Ik wil via javascript over een plaatje 'tekenen'. Maar als ik dus begin met tekenen, veranderd de cursor in een 'not-allowed' cursor.
Stel het plaatje in als background-image van het vlak waarin je wilt tekenen. Leuk idee trouwens.
Flaccidvrijdag 16 november 2007 @ 07:46
quote:
Op woensdag 14 november 2007 18:36 schreef SuperRembo het volgende:

[ code verwijderd ]

Dit geeft toch echt 'henk7piet'.
heb dit gedaan:

1
2
3
document.write('henk')
time()
document.write('piet')

dit werkt wel
SuperRembovrijdag 16 november 2007 @ 09:26
quote:
Op vrijdag 16 november 2007 07:46 schreef Flaccid het volgende:

[..]

heb dit gedaan:
[ code verwijderd ]

dit werkt wel
Nou ja "werkt".

Het vermoeden van super-muffin was dus terecht. De functie time() returnt zelf niets, time() voert zelf een document.write() uit. De uitkomst die je kreeg was dus heel erg logisch.
Chandlervrijdag 14 december 2007 @ 10:02
Ik heb een vraagje over dynamische form elementen.

Aangezien ik er niet uitkom vraag ik het dan maar.

Een voorbeeld:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<script type="text/javascript">
function addForm()
{
     code++;

     nieuweCode = '<div id="code' + code '">Inhoud</div>';

     document.getElementById('code').innerHTML = document.getElementById('code').innerHTML + nieuweCode

}

function removeForm(id)
{
     document.getElementById('code').removeChild('code' + id);
}

code = 1;


opzet html

1
2
3
<div id="code">
     <div id="code1">Inhoud</div>
</div>


Het doel is dynamisch divs (met inhoud) toe te voegen! iemand die mijn fout ziet? en jaa ik heb gezocht! :D

Nu krijg ik met addForm wel een extra box in code, maar deze kan ik niet verwijderen met removeForm
Geqxonvrijdag 14 december 2007 @ 10:26
1     document.getElementById('code').removeChild(document.getElementById('code' + id));


Gokje.
Geqxonvrijdag 21 december 2007 @ 18:09
En een dummy vraag: Bestaat er binnen de DOM een unshift achtige functie voor appendChild? Dat hij de child niet ná de rest van de childs zet maar ervoor? Op het moment gooi ik alles naar een temporary object over, voeg ik er eentje toe, en dan weer terug, maar snel is dat helaas niet.
SuperRembovrijdag 21 december 2007 @ 18:21
Dat kan met element.insertBefore().
Geqxonzaterdag 22 december 2007 @ 15:48
Bedankt, nu ben ik van 1600 childNode "verschuivingen" naar 113 gegaan.
BabeWatcherdinsdag 1 januari 2008 @ 17:26
Heeft iemand misschien een eenvoudig alternatief voor innerHTML?
Via innerHTML lukt het niet om karakters zoals ö,ü of é te plaatsen, Firefox geeft een ? , IE laat ook karakters achter het teken weg.
SlimShadydinsdag 1 januari 2008 @ 17:32
zoiets?
1document.body.appendChild(document.createTextNode('vul hier je tekst'));
BabeWatcherdinsdag 1 januari 2008 @ 17:36
Ik kwam met google ook al op TextNodes uit, ik ga dit vanavond proberen (ik wil het in een bestaande div, maar dat gaat wel lukken). Dankjewel.
Farenjidinsdag 1 januari 2008 @ 17:37
quote:
Op dinsdag 1 januari 2008 17:26 schreef BabeWatcher het volgende:
Heeft iemand misschien een eenvoudig alternatief voor innerHTML?
Via innerHTML lukt het niet om karakters zoals ö,ü of é te plaatsen, Firefox geeft een ? , IE laat ook karakters achter het teken weg.
Welkom in de wondere wereld van encodingproblemen.

Zorg ervoor dat de tekens die je mbv innerHTML plaatst in dezelfde codering staan als de codering waarmee de pagina wordt weergegeven (te achterhalen door in firefox de pagina info op te vragen). Het htmlbestand vanwaaruit je die innerHTML probeert te zetten, moet dus ook in die codering opgeslagen zijn.

Het gaat dus niet goed als de webserver tegen de browser zegt dat de pagina uit UTF-8 data bestaat, maar dat het html bestand zelf als ISO8859 is opgeslagen. Dan zijn de speciale tekens in de broncode ook in ISO8859 formaat opgeslagen. En dat gaat niet goed als de browser alles beschouwt als UTF-8.

Wil je goed en probleemloos met speciale tekens werken dan moet je een codering kiezen. Het slimste is om voor UTF-8 te kiezen. Maar daar moet je dan wel consequent voor kiezen: *alles* moet UTF-8 zijn, van de html broncode, de encoding header die je webserver meestuurt, tot aan de data in je database.
BabeWatcherdinsdag 1 januari 2008 @ 17:50
okee, dat kan ik ook nog proberen, mijn database (locaal) is latin-1, hoe het op lycos is weet ik niet.

--19:30
Het ligt dus aan de codering (iso-8859 vs utf 8). Ik ben er bijna uit, ik blijf nog even zoeken.


-19:45
Farenji
Het werkt, nog niet in IE, maar dat ligt aan de advertenties op lycos

[ Bericht 27% gewijzigd door BabeWatcher op 01-01-2008 19:44:10 ]
super-muffinvrijdag 11 januari 2008 @ 20:57
Ik heb een jQuery vraagje, hoe kan ik een attribuut toggelen?

Dus als het attribuut nog niet bestaat aanmaken, en als het wel bestaat aanmaken.
CraZaayzaterdag 12 januari 2008 @ 12:14
Wat voor attribuut? CSS-attribuut, HTML-attribuut?

http://docs.jquery.com/Events/toggle
http://docs.jquery.com/Attributes/toggleClass#class

Dit en meer is prima te vinden in de uitstekende documentatie.
super-muffinmaandag 14 januari 2008 @ 17:42
HTML attribuut.

Die toggle functie had ik wel gevonden, maar doet niet precies wat ik wil. Het attribuut moet aangemaakt worden als het niet bestaat, en als het wel bestaat verwijderd worden, met die toggle functie gaat dat niet lukken, die registreerd gewoon elke even en oneven klik.
SuperRembomaandag 14 januari 2008 @ 18:02
Zo?

1
2
3
4
5
6
7
8
9
var el = $('id');
if (typeof(el.attr('foo')) == 'undefinded')
{
   el.attr('foo', 'bar');
}
else
{
   el.removeAttr('foo');
}
CraZaaymaandag 14 januari 2008 @ 19:25
quote:
Op maandag 14 januari 2008 17:42 schreef super-muffin het volgende:
HTML attribuut.

Die toggle functie had ik wel gevonden, maar doet niet precies wat ik wil. Het attribuut moet aangemaakt worden als het niet bestaat, en als het wel bestaat verwijderd worden, met die toggle functie gaat dat niet lukken, die registreerd gewoon elke even en oneven klik.
Precies. Die kun je dan toch prima gebruiken om te doen wat in de post hierboven staat?
super-muffinmaandag 14 januari 2008 @ 19:30
Dat wat hier boven staat had ik nodig, thanks. Stom dat ik er zelf niet ben opgekomen
SuperRembomaandag 14 januari 2008 @ 19:45
quote:
Op maandag 14 januari 2008 19:30 schreef super-muffin het volgende:
Dat wat hier boven staat had ik nodig, thanks. Stom dat ik er zelf niet ben opgekomen
Even de documentatie doorlezen: http://docs.jquery.com/Attributes. Wat voor functies bestaan er? Zit er iets tussen wat ik kan gebruiken?
quote:
If the element does not have an attribute with such a name, undefined is returned.
super-muffinmaandag 14 januari 2008 @ 20:03
Ik weet wel hoe ik documentatie moet gebruiken hoor
Maar toen ik hier aan begon dacht ik iets te moeilijk na, terwijl het erg simpel is.

anyway, ik kan weer verder.
wobbelmaandag 21 januari 2008 @ 19:56
Ik hoop dat jullie een beetje JS kunnen

Ik heb deze pagina:

http://www.senscomputers.nl/v2/TEST.php

als je vervolgens de popup opent, en je klikt op het nummer...dan moet ie dat invullen in het inputvenster van het vorige venster

Het KAN wel maar hoe?
ralfiemaandag 21 januari 2008 @ 20:02
opener.test.mediaId.value = "watermeloen"
Flaccidmaandag 21 januari 2008 @ 22:08
quote:
Op maandag 21 januari 2008 19:56 schreef wobbel het volgende:
Ik hoop dat jullie een beetje JS kunnen

Ik heb deze pagina:

http://www.senscomputers.nl/v2/TEST.php

als je vervolgens de popup opent, en je klikt op het nummer...dan moet ie dat invullen in het inputvenster van het vorige venster

Het KAN wel maar hoe?
submit form naar een popup:

http://obiewebsite.source(...)it_a_form_to_a_popup

Verkeerd begrepen, maar misschien kan je zoiets doen.

[ Bericht 2% gewijzigd door Flaccid op 21-01-2008 22:17:52 ]
wobbelvrijdag 25 januari 2008 @ 13:58
Help!!!11!!!

Ik heb deze HTML code:

1<span id="AjaxCheckUsername"> </span>


Nu wil ik met Javascript de text in dat vakje wijzigen...hoe doe ik dat?
Dit werkt namelijk NIET:

1document.getElementById('AjaxCheckUsername').value = 'Bezig met opvragen...'


- Reactie op post over andere vraag -
quote:
Op maandag 21 januari 2008 20:02 schreef ralfie het volgende:
opener.test.mediaId.value = "watermeloen"
Bedankt werkt goed
Geqxonvrijdag 25 januari 2008 @ 14:04
Als je het snel en vies wilt doen:


1document.getElementById('AjaxCheckUsername').innerHTML = 'Bezig met opvragen...'
wobbelvrijdag 25 januari 2008 @ 14:12
quote:
Op vrijdag 25 januari 2008 14:04 schreef Geqxon het volgende:
Als je het snel en vies wilt doen:
[ code verwijderd ]
ik ben een vies mannetje
SuperRembovrijdag 25 januari 2008 @ 14:31
Het kan ook met element.innerText (IE) / element.textContent (FF). Vooral handig als je er tekst in wil zetten die mogelijk tekens bevat die html-encoded moeten worden. (Natuurlijk wel ff in een herbruikbare functie van maken).
Geqxonvrijdag 25 januari 2008 @ 14:40
Het is nog wel het mooist om er een textnode in te zetten.
SuperRembovrijdag 25 januari 2008 @ 15:03
quote:
Op vrijdag 25 januari 2008 14:40 schreef Geqxon het volgende:
Het is nog wel het mooist om er een textnode in te zetten.
Dat kan als je zeker weet dat ie leeg is. Anders moet je eerst de bestaande child node(s) verwijderen.
Geqxonvrijdag 25 januari 2008 @ 15:15
En dat is gelukkig vrij simpel:

1
2
3
   while (node.hasChildNodes()){
     node.removeChild(node.firstChild);
   }
SuperRembovrijdag 25 januari 2008 @ 16:31
Vreemd genoeg is jouw manier in IE sneller dan mijn manier, maar in FF is 't andersom

(Het is natuurlijk heel goed mogelijk dat dat aan m'n primitieve testscriptje ligt)

[ Bericht 24% gewijzigd door SuperRembo op 25-01-2008 16:39:06 ]
Geqxonvrijdag 25 januari 2008 @ 18:43
Jij werkt zeker met een for-lusje dat loopt van 0 tot het aantal kinderen van de node? Vreemd inderdaad...
ralfievrijdag 25 januari 2008 @ 20:08
quote:
Op vrijdag 25 januari 2008 18:43 schreef Geqxon het volgende:
Jij werkt zeker met een for-lusje dat loopt van 0 tot het aantal kinderen van de node? Vreemd inderdaad...
ik kan me er wel iets bij voorstellen. Firefox is gebouwd op een soort van javascript engine en daarom ook helemaal rond dat soort objects en children en whatnot. IE heeft een eigen platform wat javascript als het ware emuleert. Wat je dan krijgt is dat dit soort basale functies in firefox heel snel gaan (want basaal) en in IE trager (want wordt geemuleerd) terwijl iets als object.innerHTML in IE direct wordt verwerkt terwijl firefox met objects.childs.counts.removes ed. moet gaan emuleren omdat netjes te verwerken.

Dat is mijn theorie althans