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

あなたのコードで何かを得ましたが、あなたがやろうとしていることを理解できませんでした。フィドルをチェックしてください。

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 に答える
1

Actionscriptは基本的にJavascriptの方言であるため、FirebugまたはChromeの開発者ツールのインタラクティブシェルでコードをテストできます。そこでエラーレポートが表示されます。

あなたのコードを見ると、すぐにいくつかのエラーを見つけることができます。他にもエラーがある可能性があります。

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 に答える