我使用的是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表单
<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中对该函数进行了排队
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源代码时,我看到
<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的代码
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文档了吗?
发布于 2014-11-30 10:58:10
我加载了Wordpress 4.0.1,但无法重现这个问题。这段代码适用于我在火狐v33和Chrome v39中的应用。

您是如何设置的?我做了以下工作:
在../wordpress/wp-content/themes/yourTheme/functions.php
../wordpress/wp-content/themes/yourTheme/javascript/group-membership-cost.js
你在你当前的Wordpress应用中使用主题yourTheme吗?
发布于 2014-11-30 11:56:31
在Adrew说他不能重现这个问题之后,我确信我在很大程度上是正确编码的。这促使我寻找"duh“错误。很抱歉浪费了你朋友的时间。如果有人关心,这就是问题所在……
我回头看了看网页,又看了看页面的源代码。在页面的源代码中,我单击了脚本的超链接,它打开了一个包含脚本的JavaScript代码的编辑器。由于某些原因,我之前对脚本所做的更改并不存在。
以前,我在group-membership-cost.js函数的开头和结尾都有<script> </script>标记,这是我开始尝试在HTML文档中编写所有这些内联代码时遗留下来的。但是当我将JavaScript代码放在.js文件中时,我删除了这些标记。由于某些原因,删除<script>标签的一次更改并没有保存下来,而是自然而然地把所有东西都搞错了。
因此,我只需使用WinSCP通过ftp连接到服务器,在WinSCP的文本编辑器中打开脚本文件,然后点击工具栏中的“重新加载”图标。然后我硬刷新了网页。现在它起作用了。
我想我什么也没学到,只能确保在WinSCP的文本编辑器中认真地点击“重新加载”按钮。
很抱歉浪费了大家的时间。
https://stackoverflow.com/questions/27208211
复制相似问题