我对改变元素的背景色感兴趣,方法是用变量访问一次背景色,然后通过变量将它设置为另一个背景色。
这是我的“before”代码中的相关部分(工作正常):
function switchToGreen(index) {
var allGreen = true;
var t = document.getElementsByTagName("td");
var t_cur = t[index];
if (t_cur.style.backgroundColor == "white") {
t_cur.innerHTML = "1";
t_cur.style.backgroundColor = "lightGreen";
}
else {
t_cur.innerHTML = "- 1";
t_cur.style.backgroundColor = "white";
}
.
.
.
}
虽然这段代码可能工作得很好,但我觉得如果我能在初始化变量时编写一次“t_cur.style.BackgroundColor”,它会更整洁,因此我尝试将代码更改为(我用**标记了相关的更改):“t_cur.style.BackgroundColor”,“t_cur.style.BackgroundColor”,“t_curr.style.BackgroundColor”
var allGreen = true;
var t = document.getElementsByTagName("td");
**var t_bgClr = t_cur.style.backgroundColor;**
var t_cur = t[index];
if (**t_bgClr == "white"**) {
t_cur.innerHTML = "1";
**t_bgClr = "lightGreen";**
}
让我感到奇怪的是,当我这么做的时候,它确实执行了这部分:
这告诉我它确实输入了'if'语句,而且t_bgClr确实是白色的,但是它不会执行这部分:
这是应该的。
难道不能通过变量设置属性的背景色吗?
在获取或设置属性背景时,在使用变量的方式和方式上是否存在差异?
/////////////////////// 如果你觉得有什么不太清楚或不清楚的地方,请告诉我,我很乐意学习和改进。
使用下面的代码时,
t_bgClr = t_cur.style.backgroundColor;
t_bgClr存储字符串(例如,White“)。这就是为什么您能够使用t_bgClr存储字符串(例如,White”)的原因。 即如果(t_bgClr==“white”)。。。条件有效。 t_bgClr deos不包含对t_cur.style的backgroundColor属性的引用。
因此t_bgClr=“lightgreen”更改变量的字符串值,而不是backgroundColor属性。 如果您想缩短代码,您可以尝试如下所示:
var allGreen = true;
var t = document.getElementsByTagName("td");
var t_bgClr = t_cur.style.backgroundColor;
var t_curStyle = t_cur.style;
var t_cur = t[index];
if (t_bgClr == "white"**) {
t_cur.innerHTML = "1";
t_bgClr = "lightGreen";
t_curStyle.backgroundColor=t_bgClr;
}
你可以做这样的事情:
var shortened = t_cur.style;
if (shortened.backgroundColor == "white") {
t_cur.innerHTML = "1";
shortened.backgroundColor = "lightGreen";
}
else {
t_cur.innerHTML = "- 1";
shortened.backgroundColor = "white";
}
....
但是,下面将不起作用:
var shortened = t_cur.style.backgroundColor;
if (shortened == "white") {
t_cur.innerHTML = "1";
shortened = "lightGreen";
}
原因是,这里的sharmed
只是t_cur.style.BackgroundColor
的值,您可以随意更改这个变量中的值,它不会影响DOM。
null
var t = document.getElementById("myId");
var common = t.style;
common.background = 'red';
common.background = 'blue';
<div id ="myId" style="width:50px;height:50px;border:1px solid">
sfsf
</div>