0

这是我的代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>

<script>
function count()
{
    var listOfWords, paragraph, listOfWordsArray, paragraphArray;
    var wordCounter=0;

    listOfWords = document.getElementById("wordsList").value;

    //Split the words
    listOfWordsArray = listOfWords.split("\n");

    //Get the paragrah text
    paragraph = document.getElementById("paragraph").value;
    paragraphArray = paragraph.split(" ");

    //check whether paragraph contains words in list
    for(var i=0; i<listOfWordsArray.length; i++)
    {
        if(paragraph.contains(wordListArray[i]))
        {
                wordCounter++;
        }
    }

    window.alert("Number of Contains: "+wordCounter);
}
</script>

</head>


<body>
<center>
<p> Enter your Word List here </p>
<br />
<textarea id="wordsList" cols="100" rows="10"></textarea>

<br />
<p>Enter your paragraph here</p>
<textarea id="paragraph" cols="100" rows="15"></textarea>

<br />
<br />
<button id="btn1"  onclick="count()">Calculate Percentage</button>

</center>
</body>
</html>

在这里,我要做的是计算paragraph其中包含多少个单词wordList。中的单词wordList用换行符分隔。

但是,我在这里没有得到任何输出。我不太喜欢网络和脚本语言,所以我找不到背后的原因。

我如何计算paragraph其中还包含多少个单词wordList?请解释为什么它没有显示?

4

3 回答 3

1

indexOf如果您只想出现,请使用字符串方法。仅用于RegExp检查整个单词。像这样改变你的条件(计算整个单词):

//check whether paragraph contains words in list
for (var i = 0; i < listOfWordsArray.length; i++) {
    re = new RegExp("\\b" + listOfWordsArray[i] + "\\b");
    if (paragraph.match(re)) {
        wordCounter++;
    }
}

在这里检查:http: //jsfiddle.net/EuhEE/

于 2013-09-04T09:20:42.897 回答
1

你刚才打错了

//check whether paragraph contains words in list
for(var i=0; i<listOfWordsArray.length; i++)
{
    if(paragraph.contains(wordListArray[i]))
    {

看到wordListArray不存在,应该是listOfWordsArray

见这里http://jsfiddle.net/PW7jZ/

于 2013-09-04T09:36:17.263 回答
1

如果您知道 textarea 中只会包含文本,请使用此

var count = document.getElementById('content').innerHTML.split(' ').length;

如果 textarea 中可以包含 HTML 标记,则您将不得不遍历其子级以查找文本节点:

function get_text(el) {
    ret = "";
    var length = el.childNodes.length;
    for(var i = 0; i < length; i++) {
        var node = el.childNodes[i];
        if(node.nodeType != 8) {
            ret += node.nodeType != 1 ? node.nodeValue : get_text(node);
        }
    }
    return ret;
}
var words = get_text(document.getElementById('content'));
var count = words.split(' ').length;

这与 jQuery 库用于实现其 text() 函数效果的逻辑相同。jQuery 是一个非常棒的库,在这种情况下它不是必需的。但是,如果您发现自己做了很多 DOM 操作或 AJAX,那么您可能需要检查一下。

于 2013-09-04T09:49:51.123 回答