2009-06-21 7 views
0

J'ai un volet avec un ensemble de tables générées par javascript, chacune avec un ID unique et 4 cellules, et j'utilise le code Javascript suivant pour définir la couleur d'arrière-plan de l'une de ces tables. Cela fonctionne bien dans Firefox, mais il plante Safari la première fois qu'il essaie de définir la couleur d'arrière-plan (dans l'instruction if). Des idées pourquoi?pourquoi est-ce crash safari javascript mais pas firefox?

<script language='Javascript'> 
    function colortree(source) { 
    var el=parent.frames['tree-pane'].document.getElementsByTagName('table'); 
    for (var i=0;i<el.length;i++) { 
     var id = el[i].id; 
     if (id) { 
      var cell = el[i].getElementsByTagName('td')[3]; 
      if (id == source) { cell.style.backgroundColor = 'yellow' } 
      else { cell.style.backgroundColor = 'white' }; 
     } 
    } 
    return false; 
    } 
</script> 
+1

Vos tables _all_ ont-elles au moins 4 cellules? Sinon, votre référence [3] codée en dur serait invalide. –

Répondre

3

Vous devriez toujours vérifier l'existence d'indices de tableau s'il y a une chance qu'ils n'existent pas

par exemple

<script language='Javascript'> 
    function colortree(source) { 
    var cells, cell, id; 
    var el=parent.frames['tree-pane'].document.getElementsByTagName('table'); 
    for (var i=0;i<el.length;i++) { 
     id = el[i].id; 
     if (id) { 
      cells = el[i].getElementsByTagName('td'); 
      if (cells[3]) { 
       cell = cells[3]; 
       if (id == source) { cell.style.backgroundColor = 'yellow' } 
       else { cell.style.backgroundColor = 'white' }; 
      } 
     } 
    } 
    return false; 
    } 
</script>