0

注意:我已阅读https://meta.stackexchange.com/questions/128548/what-stack-overflow-is-not/129362#129362

它说“尝试自己编写代码,并在遇到问题时发布您尝试过的内容。” 这就是我在这里所做的。

原始PHP代码:

$text = "Hello world, I am rainbow text!";
$texty = '';
    $colors = array('ff00ff','ff00cc','ff0099','ff0066','ff0033','ff0000',
                    'ff3300','ff6600','ff9900','ffcc00','ffff00','ccff00',
                     '99ff00','66ff00','33ff00','00ff00','00ff33','00ff66',
                     '00ff99','00ffcc','00ffff','00ccff','0099ff','0066ff',
                     '0033ff','0000ff','3300ff','6600ff','9900ff','cc00ff'); 
        $i = 0;
$textlength = strlen($text);
while($i<=$textlength){
foreach($colors as $key=>$value){
    if (isset($text[$i])) {
        $texty .= "<font color=\"#".$value."\">".$text[$i]."</font>";
    }
    $i++;
}
$texty = str_replace("> <",">&nbsp;<",$texty);
echo $texty;
}

我把它扼杀为:

var text = "Hello world, I am rainbow text!";
var texty = '';
colors = new Array

('ff00ff','ff00cc','ff0099','ff0066','ff0033','ff0000',
 'ff3300','ff6600','ff9900','ffcc00','ffff00','ccff00',
 '99ff00','66ff00','33ff00','00ff00','00ff33','00ff66',
 '00ff99','00ffcc','00ffff','00ccff','0099ff','0066ff',
 '0033ff','0000ff','3300ff','6600ff','9900ff','cc00ff'); 
var i = 0;

var textlength = text.length;
var key = '';
var value = '';
while(i <= textlength){
for each(colors as key=>value){
    if (text[i] != undefined) {
        texty .= "<font color=\"#" + value + "\">" + text[i] + "</font>";
    }
    i++;
}
texty.replace("> <",">&nbsp;<");
//document.write(texty);
}

我一直在将其作为 Javascript 进行测试,这就是为什么我在代码中添加了 document.write 注释。但是,我仍然无法让它工作。我讨厌这么含糊,但是...有人可以告诉我我在哪里搞砸了吗?

4

2 回答 2

1

Actionscript 基本上是 Javascript 的一种方言,因此您可以在 Firebug 或 Chrome 的开发人员工具中的交互式 shell 中测试您的代码。在那里你会得到错误报告。

查看您的代码,我可以立即发现一些错误,可能还有其他错误:

for each(colors as key=>value){

这不是一个有效的构造。写为:

for (var key in colors) {
    var value = colors[key];

这是无效的语法:

texty .= 

利用:

texty += 

这是有效的,但不符合您的预期:

texty.replace("> <",">&nbsp;<");

您需要分配返回值:

texty = texty.replace("> <",">&nbsp;<");

应该还有更多...

于 2012-05-24T09:07:11.183 回答
1

你的代码得到了一些东西,但没有得到你想要做的事情。看看小提琴。

http://jsfiddle.net/ymutlu/pKCcS/

这看起来更好......

http://jsfiddle.net/pKCcS/2/

在这里发布代码,以防我删除小提琴链接。

var text = "Hello world, I am rainbow text!";
var texty = '';
colors = ['ff00ff','ff3300','ff6600','ffff66','00ff99','00ffcc','00ffff','00ccff','0099ff','0066ff','0033ff','0000ff','3300ff','6600ff','9900ff','cc00ff']; 
var i = 0;


var textlength = text.length;
var key = '';
var value = '';
while(i <= textlength){
    var t = text.charAt(i);

    if (t!= undefined) {
        texty += "<font color=\"#" + colors[i%colors.length] + "\">" +  t + "</font>";
    i++;
}
}

texty.replace("> <",">&nbsp;<");
document.write(texty);

​</p>

于 2012-05-24T09:12:08.203 回答