2012-08-08 9 views
0

我的代码如下如何将变量的值赋给JavaScript中的另一个方法?

function myFunction(a,b,d) 
     { 
     var R = a; 
     var G = b ; 
     var B = d ; 
     var L = "("; 
     var C = ","; 
     var Rp = ")"; 
     var E = L ; 
     var ic = '"'; 
     var prefix = "RGB"; 
     var color = ic+prefix + L + R+ C + G + C + B + Rp+ic; 
     alert(color) 
     var c=document.getElementById("myCanvas"); 
     var ctx=c.getContext("2d"); 
     ctx.fillStyle = color; 
     } 

如果我叫例如上述功能myFunction(10,20,30);alert(color);打印“RGB(10,20,30),”但我不知道如何颜色的值赋给CTX .fillStyle 由于我想使动态应用程序,我需要通过不同的颜色值,现在代码不起作用,并执行代码时打印ctx.fillStyle = color;。我会很感激,如果有人能告诉我如何将颜色的值分配给ctx.fillStyle方法。

+1

不能看到它会如何打印'rgb'当你在那里把'RGB'。请记住,CSS区分大小写。 <!DOCTYPE HTML> – 2012-08-08 05:44:28

+0

<帆布ID = “myCanvas” WIDTH = “200” HEIGHT = “100” 的风格= “边界:1px的固体#c3c3c3;”> 您的浏览器不支持HTML5 canvas标签。 的一部开拓创新的代码是上述所有我想要做的就是ctx.fillstyle动态 – 2012-08-08 14:38:14

回答

0

只要提供的值是有效的颜色值,您就可以根据需要为所需的颜色值引用一个变量。

根据您提供的代码,似乎您正在使用RGB而不是rgb

+0

在第一线它打印“RGB(255,0,0)”,这是确定的,但是当我调试下一行使用alert(ctx.fillStyle);它显示默认的黑色。即使颜色的值是正确打印的,但它不会分配'rgb(255,0,0)'。任何洞察将有所帮助 – 2012-08-08 18:55:50

0

首先,“color”是一个字符串变量,并将其用作代码段使用eval();函数。其次,在画布中设置一些可见区域,以查看代码是否真的有效,即ctx.fillRect()。最后,请确保您的文档类型声明为<!DOCTYPE html>,我希望这是。

这里是代码的工作版本(对我的作品在FF 11.0):

<!DOCTYPE html> 
<html> 
<head> 
<script > 
function myFunction(a,b,d) 
      { 
      var R = a; 
      var G = b; 
      var B = d; 
      var L = "("; 
      var C = ","; 
      var Rp = ")"; 
      var E = L ; 
      var ic = '"'; 
      var prefix = "RGB"; 
      var color = ic+prefix + L + R+ C + G + C + B + Rp+ic; 

    var c=document.getElementById("myCanvas"); 
    var ctx=c.getContext("2d"); 
    ctx.fillStyle=eval(color); //convert string to code. 
    ctx.fillRect(0,0,150,75);//any size greater than 0 
      } 
</script> 
<body> 
<button onclick="myFunction(200,0,0);">click me</button> 
<canvas id="myCanvas" width="200" height="100" style="border:1px solid #c3c3c3;"> 
</body> 
</html> 
+0

上面的处理变量的字符串RGB(10,20,30)从不打印,它所做的只是将颜色作为字符串并将其分配给ctx.fillStyle – 2012-08-08 14:43:41

相关问题