web-dev-qa-db-ja.com

Onclick関数は「定義されていません」

私は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が定義されていません。

誰か私を助けてくれますか?

7
Atrag

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など)は、コンテンツ/構造と動作が適切に分離されていないため、バグを見つけにくくするため、使用を避けてください。

5
Sagar Sahni

あなたが書いたのは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関数を書く方法?

2
Lilamuse

私はあなたのような同じエラーに直面しました。

Onclick html属性を使用する場合、(タグを使用して)同じhtml要素内でそのonclick関数を定義する必要があります。

Onclick html属性を使用するよりも、javascript/jqueryを使用してクリックイベントリスナーを作成することをお勧めします。

0
Rahul Makhija
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>';

?>