首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >onclick事件中的外部javascript函数

onclick事件中的外部javascript函数
EN

Stack Overflow用户
提问于 2014-11-30 07:16:52
回答 2查看 1.7K关注 0票数 0

我使用的是WrodPress 4.0.1。我在HTML网页中有一个简单的表单。在表单之后,我有一个带有onclick事件处理程序的按钮,当该按钮被单击时,它将调用一个函数来访问该表单。我希望由onclick事件触发的函数位于一个名为group-membership-cost.js的外部javascript文件中。外部JavaScript文件中的函数称为groupMembershipCost()。我的问题是:我不知道如何让onclick事件处理程序在单击按钮时调用groupMembershipCost(),它位于group-membership-cost.js中。我试过使用<button onclick="groupMembershipCost()">,但当我查看我的Firebug控制台时,我得到了ReferenceError: groupMembershipCost is not defined

这是HTML表单

代码语言:javascript
复制
<form id="group_membership">
6 - 9 members: <input name="6_9" type="text" /> x $35 per member
10 - 14 members: <input name="10_14" type="text" /> x $30 per member
15 - 19 members: <input name="15_19" type="text" /> x $25 per member</form>
<button onclick="groupMembershipCost()">Calculate total for Group Membership</button>

Total: <span id="total">0</span>

我使用以下代码在functions.php中对该函数进行了排队

代码语言:javascript
复制
function group_membership_cost() {
    wp_enqueue_script( 'group-membership', get_template_directory_uri() . '/javascript/group-membership-cost.js', array(), '1.0', false );
}

add_action( 'wp_enqueue_scripts', 'group_membership_cost' );

该脚本已正确入队,因为当我查看页面的HTML源代码时,我看到

代码语言:javascript
复制
<script type='text/javascript' src='http://mywebsite.com/wp-content/themes/myTheme/javascript/group-membership-cost.js?ver=1.0'></script>

以下是来自group-membership-cost.js的代码

代码语言:javascript
复制
function groupMembershipCost() {

var output = document.getElementById("total");

var group1 = document.getElementsByName("6_9")[0].value;

var group2 = document.getElementsByName("10_14")[0].value;

var group3 = document.getElementsByName("15_19")[0].value;


if (group1 != '' && parseInt(group1) != NaN) {
    if (parseInt(group1) < 6) {
        output.innerHTML = "The number of group members in this category must be greater than 5."; 
    }
    else if (parseInt(group1) > 9) {
        output.innerHTML = "The number of group members in this category must be less than 10.";
    }
    else {
        output.innerHTML = parseInt(group1) * 35;
    }
}

else if (group2 != '' && parseInt(group2) != NaN) {
     if (parseInt(group2) < 10) {
        output.innerHTML = "The number of group members in this category must be greater than 9."; 
    }
     else if (parseInt(group2) > 14) {
        output.innerHTML = "The number of group members in this category must be less than 15.";
    }
    else {
        output.innerHTML = parseInt(group2) * 30;
    }
}


else if (group3 != '' && parseInt(group3) != NaN) {
    if (parseInt(group3) < 15) {
        output.innerHTML = "The number of group members in this category must be greater than 14."; 
    }
    else if (parseInt(group3) > 19) {
        output.innerHTML = "The number of group members in this category must be less than 20.";
    }
    else {
        output.innerHTML = parseInt(group3) * 25;
    }
}

else { output.innerHTML = "Please enter the number of people in your group into one of the three boxes above."; }

}

我不明白为什么网页不能访问groupMembershipCost(),如果它在一个正确链接到页面的.js文件中。如果使用WordPress的脚本入队函数将group-membership-cost.js文件正确地链接到页面,那么JavaScript文件中的函数不就可以用于HTML文档了吗?

EN

回答 2

Stack Overflow用户

发布于 2014-11-30 10:58:10

我加载了Wordpress 4.0.1,但无法重现这个问题。这段代码适用于我在火狐v33和Chrome v39中的应用。

您是如何设置的?我做了以下工作:

  1. 将html放在页面的文本框中
  2. 将wp_enqueue_script函数放在

在../wordpress/wp-content/themes/yourTheme/functions.php

  • put中执行脚本

../wordpress/wp-content/themes/yourTheme/javascript/group-membership-cost.js

你在你当前的Wordpress应用中使用主题yourTheme吗?

票数 0
EN

Stack Overflow用户

发布于 2014-11-30 11:56:31

在Adrew说他不能重现这个问题之后,我确信我在很大程度上是正确编码的。这促使我寻找"duh“错误。很抱歉浪费了你朋友的时间。如果有人关心,这就是问题所在……

我回头看了看网页,又看了看页面的源代码。在页面的源代码中,我单击了脚本的超链接,它打开了一个包含脚本的JavaScript代码的编辑器。由于某些原因,我之前对脚本所做的更改并不存在。

以前,我在group-membership-cost.js函数的开头和结尾都有<script> </script>标记,这是我开始尝试在HTML文档中编写所有这些内联代码时遗留下来的。但是当我将JavaScript代码放在.js文件中时,我删除了这些标记。由于某些原因,删除<script>标签的一次更改并没有保存下来,而是自然而然地把所有东西都搞错了。

因此,我只需使用WinSCP通过ftp连接到服务器,在WinSCP的文本编辑器中打开脚本文件,然后点击工具栏中的“重新加载”图标。然后我硬刷新了网页。现在它起作用了。

我想我什么也没学到,只能确保在WinSCP的文本编辑器中认真地点击“重新加载”按钮。

很抱歉浪费了大家的时间。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27208211

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档