Onclick功能"未定义"

时间:2016-06-27 10:17:55

标签: javascript php jquery wordpress

我是wordpress的新手,我正在尝试定义和调用函数但无法使其工作。

以下代码出现在使用get_template_part从content.php文件调用的php文件中。

<div onclick="checkAllTopicCheckBoxes()"> </div>

我将以下代码添加到function.php文件的底部:

function checkAllTopicCheckBoxes() {
    alert("Hello! I am an alert box!!");
}

当我点击它返回的元素时:

  

(index):363未捕获的ReferenceError:未定义checkAllTopicCheckBoxes。

有人可以帮助我吗?

5 个答案:

答案 0 :(得分:5)

使用OnClick或类似属性是非常糟糕的做法。

使用Javascript事件监听器是一种更好的方法。 以现代方式注册事件是处理事件的unobtrusive way。另外,要为目标注册多个事件侦听器,可以为同一目标调用addEventListener()。

HTML:

<div id="checkAllTopicCheckBoxes"> </div>

您的JavaScript应该如下所示:

document.getElementById ("checkAllTopicCheckBoxes").addEventListener ("click", myFunction, false);

function myFunction() {
  alert("Hello! I am an alert box!!");
}
应该避免

HTML属性(例如Onclick),因为它涉及的内容/结构和行为没有很好地分开,这使得更难找到错误。

答案 1 :(得分:2)

你写的是一个Javascript函数,它必须用HTML代码包围。你有没有把你的功能写成:

echo('<script>function checkAllTopicCheckBoxes() { alert("Hello! I am an alert box!!");}</script>');

另外,我认为Wordpress必须准备好一些功能来添加脚本。试着看看wp_enqueue_script (string $handle, string $src = false, array $deps = array(), string|bool|null $ver = false, bool $in_footer = false);

编辑:我刚发现这个问题,可能会回复你的问题:How to write a Javascript function inside the functions.php of Wordpress?

答案 2 :(得分:0)

function checkAllTopicCheckBoxes() {
    alert("Hello! I am an alert box!!");
}

必须不在<? ... ?>且必须<script>...</script>换行,例如

======== sample.php =======
<? 
// php script is here
?>

<script>
function checkAllTopicCheckBoxes() {
  alert("Hello! I am an alert box!!");
}
</script>

或者如果你想在php脚本中包含js,你必须echo喜欢这个

======== sample.php =======
<? 
// php script is here

echo '<script>';
echo 'function checkAllTopicCheckBoxes() {';
echo '  alert("Hello! I am an alert box!!");';
echo '}';
echo '</script>';

?>

答案 3 :(得分:0)

我遇到了和你一样的错误。

如果我们使用onclick html属性,我们需要在同一个html元素中定义该onclick函数(通过使用标签)。

最好使用javascript / jquery创建click事件侦听器,而不是使用onclick html属性。

答案 4 :(得分:0)

确保您的 JavaScript 函数定义在调用该方法的 html 元素之上:

<script>
function checkAllTopicCheckBoxes() 
{
    alert("Hello! I am an alert box!!");
}
</script>

<div onclick="checkAllTopicCheckBoxes()"> </div>

谢谢