【问题标题】:Why am I getting the error "Uncaught TypeError: st.replace is not a function"为什么我收到错误“未捕获的 TypeError:st.replace 不是函数”
【发布时间】:2016-05-04 00:59:24
【问题描述】:

我试图建立一个投资组合。我不是 javascript 专家,不确定要删除什么,或者有什么问题。该页面运行良好,但当我尝试转到主页时,退出速度非常慢,并且控制台会抛出错误。

“未捕获的类型错误:st.replace 不是函数”

下面的这个 sn-p 是有问题的部分,当我单击主页按钮以离开“服务”页面时,它会立即给我错误。

感谢任何关于 sn-p 中不正确的说明,谢谢。

            htmlDoc: function(st) {
                var n, i = e(),
                    r = /<(\/?)(html|head|body|title|base|meta)(\s+[^>]*)?>/gi,
                    o = "ss" + Math.round(1e5 * Math.random()),
                    a = st.replace(r, function(t, n, r, a) {
                        var s = {};
                        return n || (e.merge(i, e("<" + r + "/>")), a && e.each(e("<div" + a + "/>")[0].attributes, function(e, t) {
                            s[t.name] = t.value
                        }), i.eq(-1).attr(s)), "<" + n + "div" + (n ? "" : ' id="' + o + (i.length - 1) + '"') + ">"
                    });
                return i.length ? (n || (n = e("<div/>")), n.html(a), e.each(i, function(e) {
                    var t = n.find("#" + o + e).before(i[e]);
                    i.eq(e).html(t.contents()), t.remove()
                }), n.children().unwrap()) : e(t)
            },

编辑 FelixKling

谢谢,@FelixKling 似乎有几个值:

"st = /-([\da-z])/gi,"

" st = ":(" + rt + ")(?:((('((?:\\.|[^\\']))'|\"((?:\ \.|[^\\\"]))\")|((?:\\.|[^\()[]]|" + at + "))|.))|)", "

" St = ["上"、"右"、"下"、"左"]、"

但最后一个有一个大写字母S。请复制粘贴此答案以更清楚地阅读。如果我需要更多解释,请告诉我。

【问题讨论】:

  • 那么,st 的值是多少?它似乎不是一个字符串。确保传递一个字符串。 IE。问题不在于这段代码。
  • console.log(typeof st);。这不是一个字符串,你的问题更高。
  • 这个htmlDoc函数是怎么调用的?
  • 谢谢@FelixKling。 Is 似乎有几个值: "st = /-([\da-z])/gi," 和 " st = ":(" + rt + ")(?:\((('((?:\ \\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?: \\\\.|[^\\\()[\]]|" + at + ")*)|.*)\)|)", " and " St = ["Top", "Right", "Bottom", "Left"], " 但最后一个有一个大写字母 S。请复制粘贴此答案以更清楚地阅读。如果我需要更多解释,请告诉我。
  • @krekettek 不要将诸如此类的重要细节放入 cmets 中,尤其是当它是长代码时。相反,edit 你的问题并将它们包含在其中!

标签: javascript jquery string str-replace


【解决方案1】:

您的问题似乎是 st 不是字符串。在函数顶部添加一个验证行,以确保参数是预期的类型。

if (typeof st !== 'string') {
    // HANDLE IT HERE (throw an error, return false/null, whatever you need
}

【讨论】:

  • 谢谢!我按照你说的做了,现在日志抛出: alles.js:4180 Uncaught ReferenceError: data is not defined a.htmlDoc @ alles.js:4180 a.getContentById @ alles.js:4205 d @ alles.js:4263 (匿名函数)@ alles.js:4277 i @ alles.js:2019rt.event.dispatch @ alles.js:1828 g.handle @ alles.js:1771 rt.event.trigger @ alles.js:1807(匿名函数)@ alles.js:2040 rt.extend.each @ alles.js:575rt.fn.rt.each @ alles.js:478 rt.fn.extend.trigger @ alles.js:2039 (匿名函数) @ alles.js:第4296章
猜你喜欢
  • 2015-07-17
  • 2016-01-10
  • 1970-01-01
  • 2019-08-19
  • 1970-01-01
  • 2020-02-04
  • 2019-10-14
  • 2023-01-24
  • 2017-02-20
相关资源
最近更新 更多