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 内容的方法对其进行了更新。.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 回答