0
<!DOCTYPE HTML>

<html>
<head>
    <title> Javascript - stuff </title>
    <script type="text/javascript">
    <!--
    function GetCountsAll( Wordcount, Sentancecount, Clausecount, Charactercount )
    {
        var TextString = document.getElementById("Text").innerHTML;
        var Wordcount = 0;
        var Sentancecount = 0;
        var Clausecount = 0;
        var Charactercount = 0;

        // For loop that runs through all characters incrementing the variable(s) value each iteration
        for (i=0; i < TextString.length; i++);
        if (TextString.charAt(i) == " " = true)
            Wordcount++;
        return Wordcount;

        if (TextString.charAt(i) = "." = true)
            Sentancecount++;                    
        Clausecount++;
        return Sentancecount;

        if (TextString.charAt(i) = ";" = true)
        Clausecount++;  
        return Clausecount;
    }


    -->
    </script>
</head>

<body>

    <div id="Text">
        It is important to remember that XHTML is a markup language; it is not a programming language. The language only describes the placement and visual appearance of elements arranged on a page; it does not permit users to manipulate these elements to change their placement or appearance, or to perform any "processing" on the text or graphics to change their content in response to user needs. For many Web pages this lack of processing capability is not a great drawback; the pages are simply displays of static, unchanging, information for which no manipulation by the user is required. Still, there are cases where the ability to respond to user actions and the availability of processing methods can be a great asset. This is where JavaScript enters the picture.
    </div>
    <input type = "button" value = "Get Counts" class = "btnstyle" onclick = "GetCountsAll()"/>
    <br/>       
    <span id= "Charactercount"> </span> Characters <br/>
    <span id= "Wordcount"> </span> Words <br/>
    <span id= "Sentancecount"> </span> Sentences <br/>
    <span id= "ClauseCount"> </span> Clauses <br/>

</body>
</html>

我是一名学生,还在学习 JavaScript,所以请原谅任何可怕的错误。该脚本旨在计算文章中的字符、单词、句子和从句的数量。简单地说,它只是不起作用。我已经尝试了很多方法来让它为我工作,并且得到了大量不同的错误,但无论如何我都无法让它工作。请帮忙!(顺便说一句,我知道我拼错了句子)

4

3 回答 3

0

从 中删除分号for (i=0; i < TextString.length; i++);。这打破了循环。

将括号放在{}周围,以便每次看到句号时它们都会增加。目前每次只增加句子。条款在文本末尾增加。
Sentancecount++;
Clausecount++;

我通常也会在ifs 之后使用括号。它提高了可读性,如果您可以轻松阅读,您可以看到代码在做什么。

接下来,您只能希望从该方法返回一个。如果有意义的话,让第一个方法调用第二个方法。设置它,以便您获得一些变量,然后将它们打印出来。

hth

于 2012-10-13T03:30:59.990 回答
0

您可以使用split字符串的方法。像这样:

WordCount = TextString.split(' ').length;
Sentancecount = TextString.split('.').length;
Clausecount = TextString.split(';').length;
Charactercount = TextString.length;

这样,您就不再需要for循环了。

于 2012-10-13T03:32:07.293 回答
0

好吧,你有几个问题。

首先,您希望您的 for 循环在每次迭代中要执行的代码周围都有大括号。

for (i=0; i < TextString.length; i++) {
    if (TextString.charAt(i) == " " = true)
        Wordcount++;
}

(我假设 WordCount 应该在循环之外(但无论哪种方式都不正确))

接下来,您不处理这些返回值。

可行的方法return是您可以将变量设置为函数的结果。

例如:函数 x() { return 2; }

var i = 1;
var q = i + x(); // Add the result of the function to i
alert(q); // This will display 3

因此,通过调用 return,您将该值发送回调用函数的位置,但您从未使用它。

此外,调用return会立即退出函数。如果您想继续处理,您不希望这样做。我建议您为这三个值中的每一个创建变量并将结果存储到其中。然后在脚本中处理之后,您可以将一个 div 的 innerHTML 传递给它们。

这是一个可以帮助您的示例:

<html>
<head>
    <title>Example Javascript</title>
    <script type="text/javascript">

    function myFunction()
    {
        var text = Array(8).join(parseInt('')) + ' Batman!';
        var element = document.getElementById("result");

        element.innerHTML = text;
    }

    </script>
</head>
<body>
The output from our function is: <div id="result"> </div>
<br />
<button type="button" onclick="myFunction()">Run</button>
</body>
</html>

我想指出,有一些非常简单的方法可以解决这个问题,但这似乎是家庭作业,或者至少是一种学习经验,这就是为什么我要让你走上正确的道路,而不仅仅是给你一个直接的答案。你很近!我的建议是坚持下去!

于 2012-10-13T03:56:01.353 回答