Ansh Sachdeva:
私は基本的に同じ画面上に空のボックスに、その結果をクリック上の特定のPHPファイルを実行し、表示されるボタンがたくさんあるだろうウェブサイトを作るしようとしています。これらのPHPファイルは、ディレクトリに存在しているtest_scripts
と同じディレクトリにありますindex.php
。
私は明白なステップは、それらのファイルを反復処理し、動的にUIを作成するループを作成するだろうと思いました。だから私は、途中で次のPHPコードを書きましたindex.php
#Index.php
...
<?php
$dir_itr = new DirectoryIterator("test_scripts");
foreach ( $dir_itr as $file) {
if ($file->isFile()) {
$filename= $file->getFilename() ;
$formattedFileName=
'<button
class="box button is-large is-fullwidth is-primary is-light"
onclick="loadScriptFileData($filename)">
$filename
</button>';
print $formattedFileName;
}
}
?>
...
loadScriptFileData()
頭の中でスクリプトタグの存在で書かれたjsの関数であります
<!--index.php-->
<script>
function loadScriptFileData(filename) {
alert(filename);
}
</script>
各ループのため正しく実行されているが、jsが機能し、生成されたHTMLが正しく機能していません。自分のページ上のボタン数の期待値がありますが、各ボタンは言葉だけのように名前がある"$filename"
とないで実際に予想されるファイル名を。ケースはまっすぐ仕事がないのjs、と悪化しているとしてconsoloeにエラーが発生しますUncaught ReferenceError: $filename is not defined at HTMLButtonElement.onclick ((index):71)
なぜ、$変数には、文字列に変換取得されていませんか?私ものtoString()関数が、それでもダメを試してみました。私はそれが間違っているのでしょうか?
kerbholz:
変数は、単一引用符を使用するときに解釈/解析されません。
置き換えます
$formattedFileName= '<button
class="box button is-large is-fullwidth is-primary is-light"
onclick="loadScriptFileData($filename)">$filename</button>';
とともに
$formattedFileName= "<button
class=\"box button is-large is-fullwidth is-primary is-light\"
onclick=\"loadScriptFileData('$filename')\">$filename</button>";
予想通り、すべてが動作するはずです。