почему это javascript аварийно завершает сафари, а не firefox? - PullRequest
0 голосов
/ 21 июня 2009

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

<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 Ответ

3 голосов
/ 21 июня 2009

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

, например

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