- ベストアンサー
For ループの添え字「j」が文字列になってしまう
- For ループの添え字「j」が文字列になってしまう
- 質問者はコードの「j = i + 1;」が数値データにならず文字列になるため、エラーが発生する問題に直面しています。
- 質問者は「j = (i * 1 + 1) * 1;」と書き直すことで、エラーを回避することができました。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
#1様のご指摘もありますが… function change(i,newcode)の引数iが文字列で渡されているのではないでしょうか? 「i」の内容が文字列の3だとすれば、 var i = "3"; var j = i + 1; alert(j); // →31 j = (i * 1 + 1) * 1; alert(j); // →4 j = parseInt(i) + 1; alert(j); // →4 j = +i + 1; alert(j); // →4 となります。 code[]の配列がどのようなオブジェクトなのか不明ですが、index値に対応するものが無い配列ではundefinedが返されるので、そのvalueを取ろうとしてエラーがでているのだと想像しましたが? 追加で… >for (var j = i + 1; j < document.all.code[j].value == oldcode; j++) の判定条件部分ですが、 式 j < i == code は、(j < i) == code として(booleanで)解釈されると思いますが、そのように意図していますか? ご提示のような内容だと、trueになることが無いのではと思いますが・・・ 想像するに for (j = i + 1; j < code.length; j++) { if (code[j] == oldcode) code[j] = newcode; else break; } みたいなものを意図なさっているのではないでしょうか? (codeが配列でない場合は、lengthでは判定できませんが…) でも、 >正しく処理されます とあるので、思い違いなのかも・・・
その他の回答 (1)
- 神崎 渉瑠(@taloo)
- ベストアンサー率44% (1016/2280)
document.allをサポートするブラウザで実行してますか? メジャーなところでは、IE、Opera、Safariがサポートしていますが。