• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:For ループの添え字「j」が文字列になってしまう)

For ループの添え字「j」が文字列になってしまう

このQ&Aのポイント
  • For ループの添え字「j」が文字列になってしまう
  • 質問者はコードの「j = i + 1;」が数値データにならず文字列になるため、エラーが発生する問題に直面しています。
  • 質問者は「j = (i * 1 + 1) * 1;」と書き直すことで、エラーを回避することができました。

質問者が選んだベストアンサー

  • ベストアンサー
  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.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)

回答No.1

document.allをサポートするブラウザで実行してますか? メジャーなところでは、IE、Opera、Safariがサポートしていますが。

関連するQ&A