Javascript:语法错误,无法识别的表达式:<h1>

标签 javascript jquery html regex

编辑以包含基于 Brian Hedlund 的建议的解决方案。解决方案在底部。

我在控制台日志中收到此错误

Syntax error, unrecognized expression: &lt;h1&gt; 

这是生成错误的行

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/

相关文章:

javascript - jquery 可折叠菜单帮助 - 差不多了,但也需要 2 层深度可折叠!

javascript - 如何匹配括号内的文本或数字?

jquery - 使用 jQuery 查找元素

JavaScript - 取决于下拉值

javascript - 导航不会在滚动时改变大小

javascript - 谷歌地图 API 中的 img 元素未触发 Onclick 事件

javascript - 在 HTML 文件中显示 Javascript 对象

Javascript 表单验证的缺点

javascript - 使用 jquery cookie 插件设置主体类

jquery - 如何使用手动工具滚动 html 页面?