abonnement Unibet Coolblue Bitvavo
  donderdag 31 mei 2007 @ 22:18:37 #1
12880 CraZaay
prettig gestoord
pi_49981355


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 ]
pi_49993012
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) ]
The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_49993588
Wat een waardeloze OP
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
pi_49996082
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.
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
pi_49997844
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 ]
The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_50001360
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..)
pi_50004275
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)
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
pi_50005119
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.
The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_50005203
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.
"If you are depressed you shouldn't be in C major!" - Rick Beato
pi_50009194
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
The people who lost my respect will never get a capital letter for their name again.
Like trump...
  vrijdag 1 juni 2007 @ 19:20:34 #11
12880 CraZaay
prettig gestoord
pi_50010165
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
pi_50010269
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?
pi_50012569
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.
"If you are depressed you shouldn't be in C major!" - Rick Beato
pi_50029983
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?
-
pi_50035446
example a:hover? example a?
The people who lost my respect will never get a capital letter for their name again.
Like trump...
  zaterdag 2 juni 2007 @ 17:19:15 #16
12880 CraZaay
prettig gestoord
pi_50035860
In je link-definities (a, a:hover) geen grootte opnemen, die erven ze namelijk gewoon.
pi_50086374
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?
The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_50086822
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?
"If you are depressed you shouldn't be in C major!" - Rick Beato
pi_50087316
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?
The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_50087838
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
"If you are depressed you shouldn't be in C major!" - Rick Beato
pi_50089033
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 ]
The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_50204582
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?
The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_50204758
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.
"If you are depressed you shouldn't be in C major!" - Rick Beato
pi_50204945
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?
The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_50204991
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.
"If you are depressed you shouldn't be in C major!" - Rick Beato
pi_50205093
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 ]
The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_50314747
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
  maandag 11 juni 2007 @ 09:13:52 #28
12880 CraZaay
prettig gestoord
pi_50321202
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
pi_50321307
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
  maandag 11 juni 2007 @ 14:07:00 #30
12880 CraZaay
prettig gestoord
pi_50330713
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?
pi_50331183
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
pi_50385870
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 ]
pi_50642372
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...
The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_50643250
table.createTFoot() en table.createTHead()

en uiteraard
var tbody = document.createElement("tbody");
table.appendChild(tbody);
"If you are depressed you shouldn't be in C major!" - Rick Beato
pi_50644330
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 ]
The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_50644481
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 .
"If you are depressed you shouldn't be in C major!" - Rick Beato
pi_50650149
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!?
The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_50650751
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?
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
pi_50650799
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 ]
The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_50659306
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 )
pi_50659525
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;'
"Whatever you feel like: Life’s not one color, nor are you my only reader" - Ausonius, Epigrammata 25
pi_50661862
Aha, gewoon >> neer zetten dus
(Had ik zelf ook kunnen zien door de generated source te bekijken btw.)
pi_50662573
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
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
pi_50663861
Inderdaad, dat stuk snapte ik ook niet echt.
pi_50672771
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..
The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_50678843
Is een setTimeOut niet wat voor je? Kan basicly hetzelfde als je de timer op 0 zet...
pi_50681139
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
The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_50684402
Dat kan inderdaad ook
pi_50686386
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 ]
The people who lost my respect will never get a capital letter for their name again.
Like trump...
  donderdag 21 juni 2007 @ 12:42:00 #50
12880 CraZaay
prettig gestoord
pi_50687696
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
pi_50688535
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 ]
pi_50689282
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 ]
pi_50690574
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
The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_50691053
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
pi_50693886
je hebt gelijk... heb nog een hoop te javascripten.. het is maar onderdeel van
The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_50695341
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
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
pi_50695671
Baas boven baas, verschil moet er zijn

En de "checked = (userset[i] & j)" is een hele scherpe, voor mij een gemiste kans
  donderdag 21 juni 2007 @ 17:17:34 #58
12880 CraZaay
prettig gestoord
pi_50697543
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?
pi_50697776
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
pi_50702506
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.
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
pi_50702804
Voor de mensen die graag op een makkelijk manier ronde hoeken willen maken:
http://code.google.com/p/jquery-roundcorners-canvas/
..///
  donderdag 21 juni 2007 @ 20:29:55 #62
136730 PiRANiA
All thinking men are atheists.
pi_50703409
stiekem plaats ik hier een tvp
  donderdag 21 juni 2007 @ 21:28:59 #63
12880 CraZaay
prettig gestoord
pi_50705665
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.
pi_50710533
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.
..///
  vrijdag 22 juni 2007 @ 00:02:05 #65
12880 CraZaay
prettig gestoord
pi_50712640
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.
  vrijdag 22 juni 2007 @ 19:40:34 #66
136730 PiRANiA
All thinking men are atheists.
pi_50739313
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>
  vrijdag 22 juni 2007 @ 19:59:10 #67
12880 CraZaay
prettig gestoord
pi_50740043
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
  vrijdag 22 juni 2007 @ 20:20:15 #68
136730 PiRANiA
All thinking men are atheists.
pi_50740837
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
pi_50798120
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?
pi_50802784
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.
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
pi_50912943
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
The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_50913501
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?
pi_50939010
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..
The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_50939134
Tijdelijke variabele om de selectedIndex in op te slaan waar de selectedIndex naar wordt teruggezet als het gegeven item geen value heeft?
"If you are depressed you shouldn't be in C major!" - Rick Beato
pi_50939232
K! ik ga het proberen!
The people who lost my respect will never get a capital letter for their name again.
Like trump...
  donderdag 28 juni 2007 @ 15:06:13 #76
12880 CraZaay
prettig gestoord
pi_50939242
Wat is het doel Chandler? Ben je niet goed af met <optgroup> toevallig?
pi_50939305
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.
"If you are depressed you shouldn't be in C major!" - Rick Beato
pi_50939813
<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 ]
The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_50940994
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.
}
pi_50941029
klopt het trouwens dat hier posts zijn verdwenen?
pi_50941408
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!
The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_50941956
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
pi_50942467
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.
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
pi_50944315
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...
The people who lost my respect will never get a capital letter for their name again.
Like trump...
  donderdag 28 juni 2007 @ 19:20:56 #85
12880 CraZaay
prettig gestoord
pi_50947204
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
pi_50950087
Wat voor objecten?
The people who lost my respect will never get a capital letter for their name again.
Like trump...
  donderdag 28 juni 2007 @ 21:00:39 #87
12880 CraZaay
prettig gestoord
pi_50950410
Google Maps markers, infowindow's en nog wat spul.
pi_50980534
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.
  vrijdag 29 juni 2007 @ 20:28:18 #89
693 ChOas
** Warning: Choking hazard **
pi_50982203
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)
"I contend that we are both atheists. I just believe in one fewer god than you do.
When you understand why you dismiss all the other possible gods, you will understand why I dismiss yours."

[Stephen Roberts]
pi_50983398
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
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
pi_50985079
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?
pi_50985434
Alleen een form element heeft een elements property, een div niet. Tenzij je die er zelf op zet natuurlijk.
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
pi_51176658
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 ?
  zaterdag 14 juli 2007 @ 16:27:46 #94
136730 PiRANiA
All thinking men are atheists.
pi_51463448
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?
  zaterdag 14 juli 2007 @ 16:45:32 #95
136730 PiRANiA
All thinking men are atheists.
pi_51463968
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
pi_51464911
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>
  zaterdag 14 juli 2007 @ 17:25:50 #97
136730 PiRANiA
All thinking men are atheists.
pi_51465111
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.
  zaterdag 14 juli 2007 @ 17:27:57 #98
136730 PiRANiA
All thinking men are atheists.
pi_51465184
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">
  zaterdag 14 juli 2007 @ 17:30:09 #99
136730 PiRANiA
All thinking men are atheists.
pi_51465241
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?
pi_51465264
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").
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
abonnement Unibet Coolblue Bitvavo
Forum Opties
Forumhop:
Hop naar:
(afkorting, bv 'KLB')