2016-06-28 70 views
0

我正在写一个简单的JavaScript函数,它需要一个td(表格单元格)并为其提供红色边框样式或将其关闭。代码是:将CSS样式分配给JavaScript中的变量

function doStuff(theCell) 
{ 
    var highlight = "2px solid rgb(255, 0, 0)"; 
    if(borderStyle==highlight) 
    { 
     theCell.style.border=""; 
    } 
    else 
    { 
     theCell.style.border=highlight; 
    } 
} 

这工作正常。但是要尽量使代码更清洁我试图通过一个变量来代替CSS边框样式(声明仅低于第一个):

var borderStyle = theCell.style.border; 

当我在平等比较使用此工程确定,而不是在我将它放在'else'子句中的样式分配中。

我必须努力去做一些非常愚蠢的事情。谁能解释一下。

+0

你在哪里定义了函数中的borderStyle? – hakJav

+0

'theCell.style.border'返回'string',稍后在'else'块中,你只是更新字符串,而不是将它赋值给元素.. – Rayon

+2

*我一定在努力做一些非常愚蠢的事情。*你'再假定赋值给'borderStyle'赋值*一个引用*,并且对'borderStyle'所做的更改将影响'theCell.style.border'。这个假设是错误的。 –

回答

2

如果您编写代码如var borderStyle = theCell.style.border;,则Javascript不会创建对象的引用。这里仅将border的值的副本分配给borderStyle。 theCell的对象在它的地方没有受到伤害。没有参考创建它。

+1

谢谢,还有那些评论。我的脸和我的表格单元上的边界一样红(当我将它们编码正确时,就是这样)。 – David