根据Brian Hedlund的建议编辑包含解决方案。解决方案在底部。
我在控制台日志中收到此错误
Syntax error, unrecognized expression: <h1>
这是产生错误的行
var substring = txt.find(tag).eq(i).text();
示例数据和代码如下。
为什么该行会抛出该错误以及如何解决?
我已经验证函数 _mpactIdeation_countOccurrences()是否正确执行,以及行 mpactIdeation_getTagContentsKeyphrase()中的所有行
var substring = txt.find(tag).eq(i).text();
感谢您的时间和考虑, 添
示例数据:
变量 标记 包含&#34;&lt; h1&gt;&#34;。
变量 kp 包含&#34; fish&#34;。
变量 txt 包含&#34;&lt; p&gt;一个。&lt; / p&gt;&lt; h1&gt; fish&lt; / h1&gt;&lt; p&gt;二鱼。红鱼。蓝鱼。&lt; / p&gt;&#34;。
代码:
this.mpactIdeation_getTagContentsKeyphrase = function( tag, kp ) {
try {
var result = 0;
var num = 0;
var txt = this.oText;
var tagcount = this._mpactIdeation_countOccurrences( txt, tag, false );
txt = jQuery(txt);
for (i = 0; i < tagcount; i++) {
tag = this._mpactIdeation_escapeRegExp(tag);
var substring = txt.find(tag).eq(i).text();
result += this._mpactIdeation_countOccurrences(substring, kp, false);
}
return num;
} catch(e) {
console.log(e);
return false;
}
}
this._mpactIdeation_countOccurrences = function( string, subString, allowOverlapping ) {
try {
string += "";
subString += "";
if (subString.length <= 0) return (string.length + 1);
var num = 0,
pos = 0,
step = allowOverlapping ? 1 : subString.length;
while (true) {
pos = string.indexOf(subString, pos);
if (pos >= 0) {
++num;
pos += step;
} else break;
}
return num;
} catch(e) {
console.log(e);
return false;
}
}
解决方案:
this.mpactIdeation_getTagContentsKeyphrase = function( tag, kp ) {
try {
var result = 0;
var num = 0;
var txt = this.oText;
var tagcount = this._mpactIdeation_countOccurrences( txt, tag, false );
txt = jQuery(txt);
tag = this._mpactIdeation_tagToText(tag);
for (i = 0; i < tagcount; i++) {
var substring = txt.find(tag).eq(i).text();
result += this._mpactIdeation_countOccurrences(substring, kp, false);
}
return num;
} catch(e) {
console.log(e);
return false;
}
}
this._mpactIdeation_countOccurrences = function( string, subString, allowOverlapping ) {
try {
string += "";
subString += "";
if (subString.length <= 0) return (string.length + 1);
var num = 0,
pos = 0,
step = allowOverlapping ? 1 : subString.length;
while (true) {
pos = string.indexOf(subString, pos);
if (pos >= 0) {
++num;
console.log( "countOccurrences FOUND: " + subString + " INCREMENT");
pos += step;
} else break;
}
return num;
} catch(e) {
console.log(e);
return false;
}
}
this._mpactIdeation_tagToText = function(tag) {
try {
return tag = tag.replace(/[<>]/g, '');
} catch(e) {
console.log(e);
return false;
}
}
答案 0 :(得分:2)
正确的find
语法为find('h1')
,而不是find('<h1>')
这将修复您的错误,但找不到您的h1。 find
查找搜索目标的后代,并且由于您的txt
没有根节点,因此目标h1
不是后代,而是兄弟。 .siblings('h1')
可以解决问题。