#1 楼
有一些好的做法可以帮助您解决此问题。您可能还会遇到难以调试的奇怪格式错误。不必为头痛而烦恼,并始终以与打开标签相反的顺序关闭标签。整体表,而不是每行一个。您还可以使用W3C官方HTML验证器来确保生成的输出是有效的HTML,并调整JavaScript以使其匹配。块;仅构造一次内容
如果您以后决定更改原始HTML的生成方式(例如从表移动到div和spans),则可以更轻松地进行更新。
如果不使用CSS,请避免使用简写形式所有属性
使用
<tbody>
意味着已清除所有其他已设置的CSS背景属性(<tbody>
,if
,background: XYZcolor;
和background-image
)。如果这是您的意图,请保留。如果不是,请更精确地使用样式,并仅使用background-repeat
。这可能现在对您没有影响,但是是一个避免以后再出现意外的好习惯。避免使用background-attachment
属性这将使您能够:
给出有意义的名称,以指示为什么为单元格着色的特定方式(以便您可以在浏览器中使用“查看源代码”进行调试)
独立于JavaScript来调整样式(这样,如果客户希望红细胞稍微变红,就不需要让JavaScript开发人员参与)
避免此SO问题中提到的问题:
与以前的建议结合使用会给我们:
<tbody><tr><td>....</td></tr></tbody>
使用适当的CSS:
background-position
可以将类似的策略应用于代码的其他逻辑块。
还可以将多个CSS类添加到单个标签
background-color: XYZcolor;
中。有时,这对于简化style=
/ .lateByOneHour {
background-color: red;
}
.notOutYet {
background-color: red;
}
.backFromDinner {
background-color: lime;
}
.outForDinner {
background-color: yellow;
}
.inNormally {
background-color: lime;
}
.defaultStatus {
background-color: red;
}
逻辑很有用,但此处似乎并非如此。不过,最好将其放在后兜。为获得更好的性能,请在循环外部调用
<td class="class1 class2">
jQuery网站本身上有一个页面介绍为何
if
循环缓慢,但要点是与else
和appendTo()
一样,触摸DOM非常昂贵。在循环的末尾添加一次巨大的HTML(整个表)块,比在循环的每次迭代中添加少量HTML(仅一行)要快得多。评论
\ $ \ begingroup \ $
我想指出,根据上下文,不关闭某些标签是完全有效的。例如,,
)关闭时,它们自动关闭)已打开。
\ $ \ endgroup \ $ –分裂 2014年8月20日在18:01 \ $ \ begingroup \ $ 它不会通过HTML验证程序吗? \ $ \ endgroup \ $ –IEatBagels 2014年8月20日在18:12 \ $ \ begingroup \ $ 虽然确实不需要关闭此类标签,但作为新手最好还是谨慎一点。如果习惯上总是关闭一个封闭的标签,则不必记住哪个标签是自动关闭的。 \ $ \ endgroup \ $ –阿尔弗雷德·阿姆斯特朗(Alfred Armstrong) 14年8月20日在19:01 \ $ \ begingroup \ $ @TopinFrassi,以下通过W3C的验证器:<!DOCTYPE html>
|
---|
评论
您能再介绍一下这段代码吗?没有HTML转义?我想可以保证Person.Name中没有<(不是用户输入)吗?
@JoshKirkpatrick尽管在这种情况下这不是安全问题,但我仍然建议不要将数据视为HTML(如果不是HTML的话)(在这种情况下,构造td元素,然后设置其文本,而不是文本)将文本连接成HTML字符串)。
由于您正在构建大量HTML,因此可以签出模板库,例如Mustache.js或Handlebars.js。这些库有其自己的条件处理方式,可能会简化此过程的很大一部分。
只是语义:实际上并没有深层嵌套。嵌套是指一个{...}出现在另一个{...}内部。我不确定您会怎么称呼这种情况。