私はwordpressにかなり慣れており、関数を定義して呼び出しようとしていますが、機能させることができません。
次のコードは、get_template_partを使用してcontent.phpファイルから呼び出されるphpファイルに表示されます。
<div onclick="checkAllTopicCheckBoxes()"> </div>
Function.phpファイルの下部に次のコードを追加しました。
function checkAllTopicCheckBoxes() {
alert("Hello! I am an alert box!!");
}
要素をクリックすると戻ります:
(インデックス):363 Uncaught ReferenceError:checkAllTopicCheckBoxesが定義されていません。
誰か私を助けてくれますか?
OnClickまたは同様の属性を使用することは、非常に悪い習慣です。
これを行うには、JavaScriptイベントリスナーを使用する方がはるかに優れています。最新の方法でイベントを登録することは、イベント処理の 無邪気な方法 です。また、ターゲットに複数のイベントリスナーを登録するには、同じターゲットに対して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など)は、コンテンツ/構造と動作が適切に分離されていないため、バグを見つけにくくするため、使用を避けてください。
あなたが書いたのは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);
編集:私はちょうどその質問を見つけました、それはあなたの答えになるかもしれません: Wordpressのfunctions.php内にJavaScript関数を書く方法?
私はあなたのような同じエラーに直面しました。
Onclick html属性を使用する場合、(タグを使用して)同じhtml要素内でそのonclick関数を定義する必要があります。
Onclick html属性を使用するよりも、javascript/jqueryを使用してクリックイベントリスナーを作成することをお勧めします。
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>';
?>