gpt4 book ai didi

Javascript 错误停止 $document.ready()

转载 作者:行者123 更新时间:2023-11-30 17:46:23 25 4
gpt4 key购买 nike

我正在更新在 Expression Engine 上运行的现有网站。到目前为止,我一直远离任何我没有编写或无法理解的代码。我最近一定是在某个地方更改了一些代码(我知道这很有帮助),现在我没有编写的一段 JS 导致了一个似乎绕过了 document.ready() 事件的错误。然而,window.load() 事件仍在发生。

在 Chrome DevTools 控制台中,错误“Uncought TypeError: Cannot call method 'replace' of UNDEFINED”指向下面粘贴的函数“fixedEncodeURIComponent”的定义。

$("#MessageContainer.Counted").counter({
type: 'char',
goal: 250,
count: 'down'
}).change(function(){
var TEMP = fixedEncodeURIComponent($(this).val());
$("#Message").val(TEMP);
});

var TEMP = fixedEncodeURIComponent($("#MessageContainer.Test").val());
$("#Message").val(TEMP);

function fixedEncodeURIComponent (str) {
str=str.replace(/"/g, '');
return encodeURIComponent(str).replace(/[!'()*]/g, escape);
}

当我解释这个错误时,这个函数正在传递一个不是字符串的变量。我在函数定义中添加了一个 alert(str),结果如我所料是 UNDEFINED。对我来说,几个未知数中的第一个是向函数“fixedEncodeURIComponent”的哪个调用传递了一个错误的变量。我假设这是第一个电话,但这只是一个猜测。碰巧第一次调用包含我以前从未遇到过的语法。我不知道如何解释将 $(this) 作为函数参数传递时会发生什么。

如有任何见解,我们将不胜感激。另外,如果您需要更多信息,请告诉我。客户的站点受密码保护,但我可以包含您请求的任何代码。

谢谢。

最佳答案

我猜测 });第 3 行正在退出 document.ready 上下文。如果是这样,那么您第二次调用 fixedEncodeURIComponent甚至可能在 DOM 加载之前就被调用。

从包装开始


var TEMP = fixedEncodeURIComponent($("#MessageContainer.Test").val());
$("#Message").val(TEMP);

在一个


$(function() {<br/>
// code<br/>
});

阻止。如果这不起作用,请检查 #MessageContainer.Test 是否确实与元素匹配。由于这是您继承的代码,类名“Test”提示我,有问题的 block 可能是某人试图调试问题的残余,也许它应该被删除。

关于Javascript 错误停止 $document.ready(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20079472/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com