2009-06-21 5 views
0

У меня есть панель с набором созданных javascript таблиц, каждый из которых имеет уникальный идентификатор и 4 ячейки, и я использую следующий код Javascript для установки цвета фона для одной из этих таблиц. Он отлично работает в Firefox, но он сначала отключает Safari, когда он пытается установить цвет фона (в выражении if). Любые идеи почему?Почему это сафари с ошибкой javascript, но не 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

У ваших столов _all_ есть как минимум 4 ячейки? Если это не так, ваша жестко закодированная [3] ссылка недействительна. –

ответ

3

Вы всегда должны проверить наличие индексов массива, есть ли шанс, что они не существуют

например

<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>