编辑以包含基于 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();
感谢您的时间和考虑, 蒂姆
示例数据:
变量标签包含“
”。
变量kp包含“fish”。
变量txt包含“
一条。
鱼
两条鱼。红鱼。蓝鱼.
”。代码:
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;
}
}
最佳答案
正确的find
语法为find('h1')
,不是find('<h1>')
这将修复您的错误,但找不到您的 h1。 find
寻找搜索目标的后代,并且因为您的 txt
没有根节点,预期目标h1
不是后裔,而是 sibling 。 .siblings('h1')
就可以了。
关于Javascript:语法错误,无法识别的表达式:<h1>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36170797/