【发布时间】:2011-12-07 10:14:58
【问题描述】:
我正在尝试对某些内容进行字典查找,而我的方法到目前为止我只能查找单个单词,因为我使用 split(' ') 方法仅在空间上进行拆分。我刚刚遇到了一个障碍,想知道你们是否有任何可靠的意见。就像我的字典中有两个单词的键一样。如下所示
var dictionary = { "Darth Vader" : "Bad Ass Father", "Luke": "Son of the Bad Ass",
"Skywalker" : "Last name of some Jedi Knights", "Luke SkyWalker" : "Son of the Bad Ass"}
这是我到目前为止得到的代码,它显然适用于单个单词,但不适用于多个关键词。 getElementsByClassName 是一个函数,用于返回找到的所有类的数组。
var body = '<div class="activity-inner"> This is a test glossary body paragraph to test glossary highlight of the Star Wars vocabulary. like Luke Skywalker and Darth Vader, Luke and Skywalker. </div> <div class="activity-inner">Hello glossary again here Luke Skywalker Darth Vader</div>';
document.write( body);
var matches = getElementsByClassName("activity-inner");
for (int i = 0; i < matches.length; i++;) {
var content = matches[i].innerHTML;
document.write(content);
var words = content.split(' ');
for (var j = 0; j < words.length; j++) {
var temp = words[j].replace(/[^\w\s]|_/g, "")
.replace(/\s+/g, " ").toLowerCase();
if (temp in dictionary) {
words[j] = "<span class='highlight' style='color:green;'>"+words[j]+"</span>";
}
document.write(words[j] +"<br />");
}
body = words.join(' ');
document.write( "<br /> <br />" + body);
}
上面的例子行不通。然而,我的字典里有些东西会是这样的。我应该怎么做,如果可能的话,我应该如何避免这种情况?谢谢!
【问题讨论】:
-
for (var match in matches)不应用于遍历数组。除此之外,jQuery 可能会让你的工作更轻松。 -
哦,好的,谢谢。将其更改为顺序计数器循环。
-
在第二个循环中
word是索引,而不是索引元素。被索引的元素是words[word](你可以在下一行得到它)。 -
感谢 katspaugh,我将所有 for 循环更改为使用顺序计数器循环,但我没有更新此代码。但你是对的,不过谢谢!
-
不要使用
document.write。请改用appendChild或innerHTML。
标签: javascript search dictionary