给H1元素一个随机颜色

时间:2016-02-22 15:26:44

标签: javascript html css

你能解释一下这段代码有什么问题吗?

var a = document.getElementById("id1").style.color;

a = "blue"应该将id1的元素的文字颜色设置为蓝色

function randomColor() {
   var cArr = '1234567890ABCDEF'.split('');
   var c = "#";
   for (var i = 0; i < 6; i++) {
       c += cArr[Math.floor(Math.random() * 16)]
   }
   a = c;
   return c;
}
randomColor();

看起来对我很好,但肯定不是因为它不起作用。 你能解释一下我做错了什么吗?

3 个答案:

答案 0 :(得分:4)

您正在将a设置为原始值。因此,您无法指定颜色。

function randomColor() {
   var c = "#";
   for (var i = 0; i < 6; i++) {
       c += (Math.random() * 16 | 0).toString(16);
   } 
   return c;
}

var a = document.getElementById("id1").style;
a.color = randomColor();
<h1 id="id1">stackoverflow</h1>

答案 1 :(得分:3)

  

a =“blue”应该将id1的元素的文本颜色设置为蓝色

不,不是真a包含元素id1的当前颜色。

要设置颜色,您可以将元素存储在变量中,然后在其中设置blue颜色,如下所示:

var a = document.getElementById("id1");
a.style.color = "blue";

希望这有帮助。

function randomColor() {
  var cArr = '1234567890ABCDEF'.split('');
  var c = "#";
  
  for (var i = 0; i < 6; i++) {
    c += cArr[Math.floor(Math.random() * 16)]
  }  

  return c;
}

var a = document.getElementById("id1");
a.style.color = randomColor();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<h1 id="id1">H1 element</h1>

答案 2 :(得分:2)

要回答这个问题,您需要了解数据如何传递和存储在变量中。您似乎知道对象是通过引用传递的,如果您将对象存储在多个不同的变量中,则可以修改一个对象,并且它们在所有变量中都会有所不同。

但是,当您将对象的属性存储在变量中,并且该属性具有普通数据类型(如number,string或boolean)时,该变量仅存储该值而不是引用。您要做的是将document.getElementById调用中的结果元素存储在el变量中,然后在函数中访问其style.color。

el.style.color = 'blue'