[dhtml] probleem met span.length

Pagina: 1
Acties:

  • paragon
  • Registratie: April 2000
  • Laatst online: 05:50
Ik heb de volgende code om rollovers toetevoegen aan in dit geval span elementen:
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
function checkBrowser() {
if (!document.getElementById || !document.getElementsByTagName) {
return 0;
}
else { 
return 1;
}
}

cb = new checkBrowser();


if (cb) {
var span=document.getElementsByTagName("span");
for (var i=0; i<span.length; i++) {
  var el = span[i];
  if (el.className == "tab") {
    el.onmouseover = function() {
    this.className = "tabact";
    }
    el.onmouseout = function() {
    this.className = "tab";
    }
  }
}
}
else {
alert ('behaviour error');
}

alleen krijg ik als span.length 0 terug terwijl er meerdere zijn echt heel vaag, maar geen rollovers dus. Ik heb Met mozilla op JS errors gechecked maar die zijn er niet.

  • RM-rf
  • Registratie: September 2000
  • Laatst online: 15:15

RM-rf

1 2 3 4 5 7 6 8 9

gebruik eens een andere variabele-name dan 'span', bv spanArr, gebrui van de name span als variabele zou wel eens het probleem kunnen zijn als deze ook ergens anders voor wordt gebruikt of reserved is.

Intelligente mensen zoeken in tijden van crisis naar oplossingen, Idioten zoeken dan schuldigen


  • paragon
  • Registratie: April 2000
  • Laatst online: 05:50
Ik heb het even geprobeerd maar het heeft geen effect.Helaas :(

Verwijderd

Roep je dit aan na de spans in je source?

Trouwens, je browsercheck functie werkt natuurlijk niet. Je gebruikt je functie als constructor voor een object, en een object bestaat, of het object nu waarden bevat of niet.

je moet gewoon aanroepen:
code:
1
cb = checkBrowser();

En er dus helemaal geen object van maken.

Verder is 0 of 1 returnen uit een functie een beetje onzinnig, hier bestaan de vaste waarden true en false voor.

  • paragon
  • Registratie: April 2000
  • Laatst online: 05:50
Jep je hebt helemaal gelijk, ik werd om 6.30wakker en was blijkbaar niet o scherp. Ik heb de code omgezet naar het volgende:
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
function checkBrowser() {
if (!document.getElementById || !document.getElementsByTagName) {
return false;
}
else { 
return true;
}
}

cb = checkBrowser();

function setBuffer(lyr,url)
{
document.getElementById(lyr).innerHTML = 'loading...'
parent.frames['seBufferBox'].location = url
}

function initBuffer(lyr)
{
parent.document.getElementById(lyr).innerHTML = document.documentElement.innerHTML
}

function addRollOver() {
if (cb) {
var spanArr=document.getElementsByTagName("span");
alert (spanArr.length);
for (var i=0; i<spanArr.length; i++) {
  var el = spanArr[i];
  if (el.className == "tab") {
    el.onmouseover = function() {
    this.className = "tabact";
    }
    el.onmouseout = function() {
    this.className = "tab";
    }
  }
}
}
else {
alert ('behaviour error');
}
}


function init()
{
if(this.location!=top.location) initBuffer('loadTo')
setBuffer('loadTo','dutch1.html');
addRollOver();
}

alleen krijg ik nu nog wel,
Error: document.getElementById(lyr) has no properties
Source File: [url="http://localhost/seBuffer.js"]http://localhost/seBuffer.js[/url]
Line: 3

Voor de rest werkt het nu wel prima. Nu alleen dit errortje er uit en het iframe via DOM toevoegen en ik heb een leuk xhtml strict pagina'tje gebouwd.