JavaScript适用于Chrome,但不适用于ie9

时间:2014-01-21 22:11:15

标签: javascript

我正面临着JavaScript的问题。我看到它在Chrome中运行良好但在IE9中没有。这不会显示Chrome在网页上显示的内容。 我是JavaScripting的新手,我可以帮助解决这个问题。

<script type="text/javascript">

                var tds = document.getElementById('course_table')
                        .getElementsByTagName('td');
                var sum = 0;
                for (var i = 0; i < tds.length; i++) {
                    if (tds[i].className == 'count-me') {
                        sum += isNaN(tds[i].innerHTML) ? 0
                                : parseInt(tds[i].innerHTML);
                    }

                }
                var lastrecord = tds[tds.length - 2].innerHTML;

                var table = document.getElementById('course_table')
                        .getElementsByTagName('tr');
                var max = table.length - 2;
                document.getElementById('course_table').innerHTML += '<tr bgcolor=#FFCCFF><td></td><td>Total Courses</td><td>' + max + '</td><td>Total Credits Remaining</td><td>'+ sum + '</td><td> Expected Graduation Date</td><td></td><td>' + lastrecord + '</td><td></td></tr> ';
            </script>

由于 Niveditha

2 个答案:

答案 0 :(得分:1)

问题最有可能发生在最后一行:

document.getElementById('course_table').innerHTML += '<tr bgcolor=#FFCCFF><td></td><td>fsffd</td><td>' + max + '</td><td>abcdRemaining</td><td>'+ sum + '</td><td> abc</td><td></td><td>' + lastrecord + '</td><td></td></tr> ';

IE不处理由字符串添加的tr;除此之外它是非标准的。用这个替换该行,它以编程方式构建行并且更快。我添加了相应的<td>作为评论。

var table = document.getElementById('course_table');
var row = table.insertRow(-1);
row.style.backgroundColor = '#FFCCFF'; // `bgcolor` attribute is deprecated

row.insertCell(-1); // <td></td>
row.insertCell(-1).textContent = "fsffd"; // <td>fsffd</td>
row.insertCell(-1).textContent = max; // <td>' + max + '</td>
row.insertCell(-1).textContent = "abcdRemaining"; // <td>abcdRemaining</td>
row.insertCell(-1).textContent = sum; // <td>' + sum + '</td>
row.insertCell(-1).textContent = "abc"; // <td> abc</td>
row.insertCell(-1); // <td></td>
row.insertCell(-1).textContent = lastRecord; // <td>' + lastRecord + '</td>
row.insertCell(-1); // <td></td>

这里的重要方法是insertRowinsertCell,它们可以保证有效。 textContentinnerHTML更快,更安全。请使用CSS代替已弃用的bgcolor属性

答案 1 :(得分:0)

Internet Explorer不喜欢以这种方式向<tr>添加<table>个元素。您可以做的是在表格中附加一个新的<tbody>元素:

// ... the first part of your function ...

var lastrecord = tds[tds.length - 2].innerHTML;

var table = document.getElementById('course_table');

var newbody = document.createElement('tbody');

newbody.innerHTML = '<tr bgcolor=#FFCCFF><td></td><td>Total Courses</td><td>' + max + '</td><td>Total Credits Remaining</td><td>'+ sum + '</td><td> Expected Graduation Date</td><td></td><td>' + lastrecord + '</td><td></td></tr> ';

table.appendChild(newbody);