2009-06-21 15 views
0

ユニークなIDと4つのセルを持つ一連のjavascriptで生成されたテーブルがあるペインがあります。これらのテーブルのいずれかの背景色を設定するには、次のJavaScriptコードを使用します。 Firefoxではうまく動作しますが、初めてif(if文で)背景色を設定しようとするとSafariがクラッシュします。なぜどんなアイデア?なぜこの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

テーブルには少なくとも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> 
関連する問題