Ik probeer met Javascript <h1>titel</h1> te vervangen door een Flash movie met de titel erin.
Daarvoor gebruik ik deze code:
Als ik nu in een document dit zet:
<h1>titel 1</h1>
<h1>titel 2</h1>
<h1>titel 3</h1>
<h1>titel 4</h1>
dan geeft mijn eerste alert(heading1.length) netjes 4 aan. De tweede geeft echter alleen maar titel 1, titel 3 aan en ook titel 1 en 3 worden daadwerkelijk vervangen door de Flash movie. Als ik meer <h1> toevoeg, blijft het alleen maar werken bij de oneven elementen.
Ik snap er werkelijk niets van; nergens in de code zie ik iets dat ervoor zou moeten zorgen dat alleen oneven voorkomende headings replaced moeten worden.
Iemand een idee wat ik fout doe?
Daarvoor gebruik ik deze code:
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
| function embedFlash(movie, id, flashvars, width, height) { html = '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"'; html += ' codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0"'; html += ' id="' + id + '" width="' + width + '" height="' + height + '">'; html += '<param name="movie" value="' + movie + '">'; html += '<param name="bgcolor" value="#FFFFFF">'; html += '<param name="quality" value="high">'; html += '<param name="loop" value="false">'; html += '<param name="flashvars" value="'+ flashvars + '">'; html += '<param name="menu" value="false">'; html += '<param name="wmode" value="transparent">'; html += '<param name="allowscriptaccess" value="samedomain">'; if (navigator.mimeTypes && navigator.mimeTypes["application/x-shockwave-flash"]) { html += '<embed name="' + id + '" src="' + movie + '"'; html += ' quality="high" bgcolor="#FFFFFF" menu="false" swLiveConnect="true" allowScriptAccess="sameDomain"'; html += ' width="' + width + '" height="' + height + '" wmode="transparent"'; html += ' type="application/x-shockwave-flash"'; html += ' flashvars="' + flashvars + '"'; html += ' pluginspage="http://www.macromedia.com/go/getflashplayer"></embed>'; } html += '</object>'; return html; } function replaceHeadings(){ var heading1 = document.getElementsByTagName('h1'); alert(heading1.length); for (var i=0; i < heading1.length; i++){ alert(heading1[i].innerHTML); var div = document.createElement('div'); div.innerHTML = embedFlash('flash/heading1.swf', 'flash_heading', 'title=' + escape(heading1[i].innerHTML.replace('&','&')), '100%', '25'); heading1[i].parentNode.replaceChild(div, heading1[i]); } } onload = replaceHeadings; |
Als ik nu in een document dit zet:
<h1>titel 1</h1>
<h1>titel 2</h1>
<h1>titel 3</h1>
<h1>titel 4</h1>
dan geeft mijn eerste alert(heading1.length) netjes 4 aan. De tweede geeft echter alleen maar titel 1, titel 3 aan en ook titel 1 en 3 worden daadwerkelijk vervangen door de Flash movie. Als ik meer <h1> toevoeg, blijft het alleen maar werken bij de oneven elementen.
Ik snap er werkelijk niets van; nergens in de code zie ik iets dat ervoor zou moeten zorgen dat alleen oneven voorkomende headings replaced moeten worden.
Iemand een idee wat ik fout doe?