-1

大きなテキストブロックが貼り付けられるテキストボックスがあります。

次に、テキストを解析して配列にし、空白を削除します。よりクリーンでフォーマットされた出力を生成できるように、特定の配列要素からデータを引き出し、それらを別々の変数に入れる必要があります。

問題は、配列から変数に注意が渡されているように見えることです。私はそれを少しいじってみました、そして配列は正しく埋められています、しかし要素は変数に文字列を渡していません。

HTML:

<p>Contact Name: <b id='contactNameOutput'></b></p>

JavaScript:

function generateOutputfvoc() {
    var inputArr = document.getElementById('inputBox').value.split(/[\s]/);
    document.getElementById('contactNameOutput').innerHTML = inputArr[0];
}
4

1 に答える 1

1

ここで起こっていることはかなりたくさんありますが、なぜそれらを行ったのか理解するのは難しいです。私の仮定はinputBox、ユーザーが何かを書き込むためのテキストエリアまたは入力フィールドのいずれかであるということです。

さて、あなたはその文字列を空白で分割しているので、例えば文字列

クイックブラウンフォックス

次のような配列になります。

inputArr = ["The", "quick", "brown", "fox"]

これで、forループで、この配列を反復処理し、0から開始して、配列の最後に到達するまで増分します。ここでは何も奇妙なことではありません。

しかし、最初の反復では、あなたが持っているif句で、負の値で配列にアクセスしようとしています。覚えておいてください。これi0、試行しているif句の最後の部分でも未定義の値になります。うまくアクセスするには、最後の値i+1になったらどうなりますか?!iあなたはそれを別の未定義だと思いました!後でループはあなたがすでに経験した古い値にアクセスします、そして正直に言って私はあなたが何を達成しようとしているのか理解できません。

すべてのifステートメントは、特にそのループで実行する場合は、本当に混乱します。私の推測では、実際には必要ないのに、これにはforループが必要だと思っていたと思います。

あなたが持っているのはあなたのテキストエリアの単語を含む1つの配列です、あなたが期待しているものの順序を知っているなら(ユーザーがそのテキストエリアに何を入れるか本当に知っていますか?)、あなたはただ単語に直接アクセスすることができます配列内の各アイテムのインデックスがわかります。それ以外の場合は、これをより単純なものに書き直し、常に単純に保つようにしてください。

また、見ながら見上げてみませんrefactoringか?

編集

現在の問題は、配列の最初の要素が空の文字列であるということだと思います。これは、入力の先頭にスペースがある場合に発生します。

于 2013-01-19T16:28:58.710 に答える