Javascript Onclick JS函数调用,返回;Can';“找不到变量”;仅在Safari控制台中

Javascript Onclick JS函数调用,返回;Can';“找不到变量”;仅在Safari控制台中,javascript,safari,Javascript,Safari,因此,我编写了一个非常简单的JS函数,如下所示 有一个按钮具有以下代码: <button type="submit" class="large button" onclick="addCart(76,95,73,96);"> <i class="icon-shopping-cart"></i> Add to Cart </button> 添加到购物车 现在,单击该按钮后,下面的页面中添加了一个非常简单的函数,如下所示: <scr

因此,我编写了一个非常简单的JS函数,如下所示

有一个按钮具有以下代码:

<button type="submit" class="large button" onclick="addCart(76,95,73,96);">
    <i class="icon-shopping-cart"></i> Add to Cart
</button>

添加到购物车
现在,单击该按钮后,下面的页面中添加了一个非常简单的函数,如下所示:

<script type="text/javascript">
    function addCart(pid, pattr, pval, pscent = 0) {
    ...
    }
</script>
function addCart(pid, pattr, pval, pscent) {
    pscent = (typeof pscent !== 'undefined') ?  pscent : 0;
...
}

函数addCart(pid、pattr、pval、pscent=0){
...
}
这在Chrome、Firefox、Chrome for Mobile和Safari for Mobile中都能完美运行

但这在Mac上的Safari上似乎不起作用。相反,我得到了以下错误:

ReferenceError:找不到变量addCart


我不明白为什么。我很难添加一个监听器,因为有7个按钮和大量的变量正在发送,我宁愿像现在这样发送。

如果您使用jquery,请尝试使用document ready函数

$(document).ready(function() { 
// code here
});
或者在这里使用普通javascript自动执行函数

(function() {
   // your page initialization code here
   // the DOM will be available here

})();
可能的原因是您的功能在单击时不可用


下面是一个示例(使用jquery)

由于输入类型为“提交”,因此看起来您正在提交表单。您是否尝试过将输入类型设置为“button”进行测试?我终于找到了问题所在

函数在Safari中创建了一个错误,因此它从未被定义过。我将函数更改为以下内容:

<script type="text/javascript">
    function addCart(pid, pattr, pval, pscent = 0) {
    ...
    }
</script>
function addCart(pid, pattr, pval, pscent) {
    pscent = (typeof pscent !== 'undefined') ?  pscent : 0;
...
}
请注意,最大的区别是,我不再使用该函数为“pscent”声明默认值,而是使用老式方法。不确定这是否是由较旧版本的Safari或什么引起的


如果您在这里是因为一个类似的错误,请在函数中查找一些潜在的JS错误,这些错误将阻止函数被声明。

我想您没有读过这个问题。这只是javascript中的一个函数。这通常不会加载文档就绪调用,也没有页面初始化代码。该功能是肯定加载,我可以等待10分钟,但仍然打破,脚本甚至可以移动到页面上的第一件事,没有改变,这是一个非常简单的功能。这不是一个不可用的问题,它找不到它,我不知道为什么。脚本将在单击button@JasonDiehl请看小提琴。看看我的意思。谢谢。奇怪,它在mac上的safari手机版上运行。不管怎么说,我很高兴测试,如果可能的话,删除我答案的负面评价。谢谢。我没有给你负面评价,但因为它与实际问题无关,我想谁做过这件事是有道理的。当你点击按钮或页面加载时,你会得到这个错误吗?脚本标记在正文中,不管它是第一个还是最后一个,除了Safari之外,其他浏览器都能再次工作。我只有在点击按钮时才会出现这个错误。我试过了,但没有成功。Safari似乎想打电话给它,但找不到。我很感激其他人对Safari有这个问题,因为它让我发疯!特别是因为(1)在I-phone上使用mobile safari时,没有控制台窗口来显示问题所在;(2)当一个完美工作的代码块从测试页面简单地移动到一个现有的JS文件时,功能突然不存在了。在找到所谓的“罪魁祸首”之前,您可以花一整天的时间剥离代码片段。