【问题标题】:Javascript function fails to be called when passed with an argument使用参数传递时无法调用 Javascript 函数
【发布时间】:2012-06-25 21:48:01
【问题描述】:

我有一个 div,它的 onclick 调用了一个 javascript 函数。但是当我调用带有参数的javascript时它没有这样做。这很奇怪。

以下代码在单击“交易”按钮时调用函数交易()

$("#content").append('<div class="malldetails"><a href="javascript:void(0);"><button class="left" onclick="deals()">Deals</button></a></div>');

function deals(){
alert("This works");
}

但是下面的代码不起作用。

$("#content").append('<div class="malldetails"><a href="javascript:void(0);"><button class="left" onclick="deals(mallName)">Deals</button></a></div>');

function deals(NameOfMall){
alert("This does not work");
}

我认为这应该是一个小问题,但只是无法解决。请帮助我出色的编码员!非常感谢!

【问题讨论】:

  • 也发布您的其他代码。这不是问题的根源。
  • mallName 变量在哪里定义?除非它是一个全局变量,否则我不希望它可以从内联 onclick 处理程序中访问。

标签: javascript function onclick call argument-passing


【解决方案1】:

您必须在 mallName 周围使用引号

$("#content").append('<div class="malldetails"><a href="javascript:void(0);"><button class="left" onclick="deals(\'mallName\')">Deals</button></a></div>');

function deals(NameOfMall){
    alert("This does not work");
}

【讨论】:

  • mallName 是一个变量,我试过以下,deals(' +mallName+ ') Deals(" ' +mallName+ ' ") 都不起作用
  • @LINGS 在您的情况下,\''''\'\' 相同。解决您的问题的唯一方法是 mallName 应该是但不是字符串。 ''+variable+'' 将变量的值转换为字符串。
【解决方案2】:

如果触发 onclick 时 mallName 未定义(我怀疑是这样),则不会发生警报。

【讨论】:

  • 哦!我实际上是从 JSON 文件中读取 mallName 。当我使用 chrome 开发人员工具检查页面加载后,我看到了为交易 (mallName) 中的每个商城名称定义的值。这意味着我相信 mallName 已定义
【解决方案3】:

打开浏览器上的javascript错误(如果使用IE),看看它是否显示错误。如果是,则需要先声明变量。

所以这将取决于此 javascript 的放置位置。代码中显示的错误是由于未定义变量。

【讨论】:

  • 问题是,即使我对 mallName 进行硬编码,仍然不会触发 javascript。示例:onclick="deals("Lechmere Mall")" 即使这样也行不通。它仅在其中没有参数时才有效。
  • LINGS - 这不起作用,因为您使用了错误的引号。如果您想使用硬编码值进行测试,请尝试onclick="deals(\'Lechmere Mall\')"。 (请注意,单引号需要用反斜杠转义,因为它们位于用单引号括起来的字符串中。)
【解决方案4】:

您的代码正在运行..检查 mallName 是否已初始化..可能未定义。

【讨论】:

  • “您的代码正在运行” - 嗯? OP 说代码 not 工作。
  • 当然,它对您有用,因为您已将 mallName 定义为具有值的全局变量,即您对 OP 未显示的代码做出了假设。 OP 尽管在各种 cmets 中提供了附加信息,但仍未明确声明 mallName 的位置或如何设置其值 - 如果它是函数内的局部变量,则内联事件处理程序将无法访问它...
【解决方案5】:
onclick="deals("Lechmere Mall")" //wont work. 

检查

onclick="deals(\'Lechmere Mall\')" //will work.

它工作正常。

检查 mallName 是否使用 alert 初始化。

alert(mallName);
$("#content").append('<div class="malldetails"><a href="javascript:void(0);">
<button class="left" onclick="deals(mallName)">Deals</button></a></div>');

function deals(NameOfMall){
alert("This does not work");
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-07
    • 1970-01-01
    相关资源
    最近更新 更多