1

jQuery を使用して HTML ページを作成しましたが、やりたいことができません。

  1. jQueryでdiv 1のテキストを取得したい.
  2. 好ましくない文字をすべて取り除きます。
  3. テキストの配列を作成します。
  4. 配列を div 2 に表示します。

1と2は機能しており、3も同様に機能するはずです。

私はこれを作りました:

<!DOCTYPE HTML>
<html>
<head>
<LINK href="layout.css" rel="stylesheet" type="text/css">
<script src="http://code.jquery.com/jquery-latest.js"></script>
</head>
<body>
<script type="text/javascript">
$(document).ready(function() {
    var str = $("div.someText").text();
    var specialChars = "!@#$^&%*()+=-[]\/{}|:<>?,.";
    for (var i = 0; i < specialChars.length; i++) {
    str = str.replace(new RegExp("\\" + specialChars[i], 'gi'), '');
    }
    str = str.replace(/["'“”…]{1}/gi,".");
    str = str.replace(/[.*]{1}/gi," ");
    str = str.toLowerCase();
    var array = str.split(" ");
    for(var i = 0; i < array.length(); i++) {
        $("div.put").html(array[i] + "\n");
    }
})
</script>
<div class="someText">
Een kerel gaat met zijn pas gekochte hond naar de dierenarts. Eindelijk is hij aan de               
beurt en komt met zijn hond de behandelkamer binnen.......
“En?”, vraagt de dierenarts, “wat is het probleem?”. “Nou”, zegt de eigenaar van het beest,
“ik heb hem gekocht om te waken, maar elke keer als de bel gaat, dan gaat mijn hond in de hoek zitten”.
De dierenarts wrijft eens vakkundig over zijn kin en zegt tenslotte: “ja…dat doen boxers”.
</div>
<br />
<div class="put"></div>
</body>
</html>

しかし、div 2には何も表示されないため、何か間違ったことをしなければなりません。

私のコードが期待どおりに動作しない理由を誰か教えてもらえますか?

4

3 に答える 3

2

あなたはさまざまな問題を抱えていましたが、私はこのデモでそれらに対処しました:

http://jsfiddle.net/TzSLh/

  1. array.length()である必要がありますarray.length。これにより、致命的なセマンティックエラーが発生していました。
  2. str.split(str, ' ')である必要がありますstr.split(' ')。最初の引数は、分割する文字列です。
  3. .html("string')毎回HTMLを上書きします。HTMLコンテンツを追加できる1つの方法で更新しました。テキストだけの場合にも使用でき.textます。改行を表示したい場合は、CSSwhite-space: preを使用するか、の<br>代わりにを使用して\nください。ループをスキップして実行することもできます$("div.put").text(array.join("\n"));
于 2013-02-28T19:38:20.343 に答える
1

の行var array = str.split(str," ");で、間違った構文を使用していますstr.split()。スペースで分割しようとしている場合は、str.split(" "). あなたのコードが現在何をしているのかはわかりませんが、コンソールにエラーがスローされると思います。

于 2013-02-28T19:36:09.787 に答える
0
for(var i = 0; i < array.length(); i++) {
    $("div.put").html(array[i] + "\n");
}

このコードは配列をループし、毎回配列内のインデックスのコンテンツとしてクラス「put」を使用してすべての div の innerHTML を設定します。

最終的に、その innerHTML を配列の最後の項目の内容に設定します。残りは上書きされます。

jquery appendを使用して各項目を追加してから終了したいと思います。たとえば、それぞれのスパンタグとして追加できます。

あなたのdivに実際にクラス「put」があるかどうかもわかりません。それはエラーである場合とそうでない場合があります。

于 2013-02-28T19:35:51.550 に答える