我有一个窗格,其中包含一组javascript生成的表,每个表都有一个唯一的ID和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>
答案 0 :(得分:3)
如果有可能存在数组索引,你应该总是测试它们是否存在
e.g。
<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>