draw = "<div><table><tbody>";
recv = '{"张三": ["89", "63", "78", "77"], "李四": ["99", "75", "98", "97"]}';
obj = JSON.parse(recv);
for (i in obj){
draw += "<tr><td>" + i + "</td><td>" + obj[i][0] + "</td><td>" + obj[i][1] + "</td><td>" + obj[i][2] + "</td></tr>";
}
draw += "</tbody></table></div>";
document.write(draw);
我用循环建了一个表,现在希望:
1、所有行的文字居中,也就是在draw字符串中的tr标签后添加align="center"字符串,但是直接加是报错的
2、对每次循环中的obj[i][0]进行判断,如果小于90,则在tr标签后加入“bgcolor= 字符串循环,让这一行标记颜色
请问该如何实现?
居中
draw = "<div><table><tbody>";
recv = '{"张三": ["89", "63", "78", "77"], "李四": ["99", "75", "98", "97"]}';
obj = JSON.parse(recv);
for (i in obj){
draw += "<tr align='center'><td>" + i + "</td><td>" + obj[i][0] + "</td><td>" + obj[i][1] + "</td><td>" + obj[i][2] + "</td></tr>";
}
draw += "</tbody></table></div>";
document.write(draw);
判断并且改变颜色
draw = "<div><table><tbody>";
recv = '{"张三": ["89", "63", "78", "77"], "李四": ["99", "75", "98", "97"]}';
obj = JSON.parse(recv);
for (i in obj){
if (obj[i][0] < 90){
draw += "<tr align='center' bgcolor='red'><td>" + i + "</td><td>" + obj[i][0] + "</td><td>" + obj[i][1] + "</td><td>" + obj[i][2] + "</td></tr>";
}else{
draw += "<tr align='center'><td>" + i + "</td><td>" + obj[i][0] + "</td><td>" + obj[i][1] + "</td><td>" + obj[i][2] + "</td></tr>";
}
}
draw += "</tbody></table></div>";
document.write(draw);
请试下:
draw = "<div><table><tbody>";
recv = '{"张三": ["89", "63", "78", "77"], "李四": ["99", "75", "98", "97"]}';
obj = JSON.parse(recv);
for (i in obj){
if (obj[i][0] < 90) {
draw += "<tr align='center' bgcolor='red'><td>" + i + "</td><td>" + obj[i][0] + "</td><td>" + obj[i][1] + "</td><td>" + obj[i][2] + "</td></tr>";
} else {
draw += "<tr align='center'><td>" + i + "</td><td>" + obj[i][0] + "</td><td>" + obj[i][1] + "</td><td>" + obj[i][2] + "</td></tr>";
}
draw += "</tbody></table></div>";
document.write(draw);
实现的有点简陋,见谅
分享下思路
首先直接通过DOM进行样式的添加会进行报错
Uncaught TypeError: Cannot set property of undefined at
于是就想到了页面加载顺序的问题。
我们知道 页面的加载顺序(正确的顺序)是
结构>样式>行为
也就是
html>css>JavaScript
如果我们的js部分写到了页面内容的前面,那么在加载的时候,浏览器的加载顺序(错误顺序)是js>html,所以 我们在js中获取的html元素就出现了undefined的错误。
因为没有加载html的时候,js的执行对象找不到。
1.把js内容提到页面内容之后,也就是说 你的</script>标签要紧挨着</body>标签
2.把所有的js代码用
window.onload=function(){
(这里写代码)
};
包起来即可。
接下来就可以进行DOM操作了,tr元素好像设置不了样式,但是我设置了td这个元素,这个问题你看看
q2应该没什么说的。。。。。。。。。。
window.onload = function() {
draw = "<div><table><tbody>";
recv = '{"张三": ["89", "63", "78", "77"], "李四": ["99", "75", "98", "97"]}';
obj = JSON.parse(recv);
for (i in obj) {
draw += "<tr><td>" + i + "</td><td>" + obj[i][0] + "</td><td>" + obj[i][1] + "</td><td>" + obj[i][2] +
"</td></tr>";
}
draw += "</tbody></table></div>";
document.write(draw);
// 1、所有行的文字居中
var td = document.querySelectorAll('td');
for (var i = 0; i < td.length; i++) {
td[i].style.width = '1080px';
td[i].style.border = 'solid 1px black'
td[i].style.textAlign = 'center'
// 对小于90加背景颜色
if (td[i].textContent<90) {
td[i].style.backgroundColor = 'pink'
}
}
};