2013-08-28 108 views
1

开始学习JavaScript,所以我决定制作一个程序,该程序会接收一个字符串,然后返回相同的字符串,但每个字符的颜色都不相同。Javascript函数未定义

不知道为什么当我编译时,当我打电话给我的彩虹功能时,函数没有定义。 此外,试图打印出字符串,但我不知道如果我正确地做。任何合乎逻辑和风格的建议和编辑非常感谢!

<script> 
    function Rainbow(x) { 
     var mystring = String(x);            @* convert to string*@ 
     var Stringlength = mystring.lenth;          @* length fo string *@ 
     var rainbowstring = new Array(Stringlength);       @* create array of appropriate size*@ 
     var counter = 0; 
     var clr, letter; 
     while (counter < Stringlength) { 
      letter = mystring.charAt(counter); 
      var randomnumber = Math.floor(Math.random() * 10);      @* random number generator --> 11 means 0-10 *@   
      switch (randomnumber) { 
       case 0: clr = #FF0000; break; 
       case 1: clr = #00FF00; break; 
       case 2: clr = #0000FF; break; 
       case 3: clr = #FF00FF; break; 
       case 4: clr = #000000; break; 
       case 5: clr = #00FFFF; break; 
       case 6: clr = #33FFFF; break; 
       case 7: clr = #33FF00; break; 
       case 8: clr = #FFFF00; break; 
       case 9: clr = #FF66CC; break; 
      } 
      rainbowstring[counter] = <span style = 'color:"+clr+"'>"+letter+"</span>;        @* assign color *@ 
      counter++;               @* increment *@ 
     } 
     return rainbowstring; 
    } 

    @* need something that generates colors *@ 
    @* assigns colors to text *@ 

</script> 

<form> 
    Enter String: <input type ="text" name ="rainbowstring" id ="rainbowinput"/><br> 
</form> 

<button 
     type = "button" onclick = "Rainbow(document.getElementById('rainbowinput').value)" > Rainbow Generator 
</button> 
+0

你应该做的'clr'值的字符串。 –

+0

@ DanielA.White我不知道该怎么做。你的意思是像'#33FFFF'? – Liondancer

+1

你也犯了一个错字:'mystring.lenth'应该是'mystring.length'。 – mc10

回答

4

所有的颜色应该是一个字符串替换它。

switch (randomnumber) { 
     case 0: clr = '#FF0000'; break; 
     case 1: clr = '#00FF00'; break; 
     case 2: clr = '#0000FF'; break; 
     case 3: clr = '#FF00FF'; break; 
     case 4: clr = '#000000'; break; 
     case 5: clr = '#00FFFF'; break; 
     case 6: clr = '#33FFFF'; break; 
     case 7: clr = '#33FF00'; break; 
     case 8: clr = '#FFFF00'; break; 
     case 9: clr = '#FF66CC'; break; 
    } 
1

你在哪里叫它?因为我看到它不应该给你未定义。

,你做错了

rainbowstring[counter] = <span style = 'color:"+clr+"'>"+letter+"</span>; 

应该是:

rainbowstring[counter] = "<span style = 'color:"+clr+"'>"+letter+"</span>"; 

虽然更好的将rainbowstring作为一个经常性的变量,因为这样的:

rainbowstring += "<span style = 'color:"+clr+"'>"+letter+"</span>"; 

,并在结束你应该写

x.innerHTML = rainbowstring; 

即时消息还不能确定是否能使用“stringlength”考虑“strlength”或类似

+0

当我打电话给我的按钮内的彩虹,我得到一个错误,说它是未定义的... – Liondancer

+0

@Liondancer请包括该代码,可能是因为你的脚本标记不是在你的身体元素末尾 –

+0

那段代码是在底部我提供的代码 – Liondancer

-1

随着一点点的jQuery ..... jsFiddle

jQuery的

var rbow, ltrColor; 
var colors = new Array('00','33','66','99','CC','FF'); 
$('#rainbower').click(function() { 
    var blah = $('#rainbowinput').val(); 
    var lenBlah = blah.length; 
    rbow = ""; 
    for (c = 0; c < lenBlah; c++) { 
     l = blah.charAt(c); 
     ltrColor = "#"; 
     for (rgb = 0; rgb < 3; rgb++) { 
      rndColor = (Math.floor(Math.random() * 6)); 
      ltrColor += colors[rndColor]; 
     } 
     rbow += "<span style='color:" + ltrColor + "'>" + l + "</span>"; 
    } 
    $('#rainbowoutput').html(rbow); 
}); 

HTML

<form> 
    Enter String: 
    <input type="text" name="rainbowstring" id="rainbowinput" /> 
    <br /> 
</form> 
<button type="button" id="rainbower">Rainbow Generator</button> 
<div id="rainbowoutput"></div>