ID 在 PHP 的 while 循环中未按预期工作

我正在尝试创建一个 while 循环,为每个 $version 值回显一个按钮。shell_exec() 从 Python 文件返回一个值,并响应唯一的 $version 值。为此,基本目标是创建一个页面,其中按钮的数量取决于版本值。


然后,用户可以单击任何特定按钮并访问该特定按钮(版本)的数据。为此,我尝试将变量与 ID 混合使用,但似乎不起作用。我可以做什么来解决这个问题?目前所有按钮都没有响应。


代码:


<?php

              

              

              while ($version != 0) {



                echo '

                <br>

                <br>

                <button id="toggle-' . $version . '">TOGGLE</button>

                <div style= "display:none;" id="content-' . $version . '">


                ';


                $command = escapeshellcmd("C:/Python38/python.exe C:/xampp/htdocs/Ensemble/login/test.py $email $version"); 

                $output = shell_exec("$command 2>&1");

                echo($output);


                echo '

                </div>



                <script>

                var toggle  = document.getElementById("toggle-' . $version . '");

                var content = document.getElementById("content-' . $version . '");


                toggle.addEventListener("click", function() {

                  content.style.display = (content.dataset.toggled ^= 1) ? "block" : "none";

                });

                </script>


                '

                ;


                $version--;

              }

            ?>


编辑

一个新的问题出现了。只有其中一个按钮起作用。单击这两个按钮时会输出相同的内容,而不是不同的版本。在 SQL 中,所有版本都不同,因此这很可能是 html/JS 的错误。

http://img4.mukewang.com/649fd63d00018d8611440221.jpg

萧十郎
浏览 153回答 2
2回答

HUX布斯

也许以下内容可能会有所帮助 - 尽管就 Python 调用而言还没有经过测试,但我认为如果我理解正确的话,其他代码应该可以正常工作。每个 ID 在 DOM 中都必须是唯一的,我猜这就是为什么你试图通过$version向每个 ID 添加数字来使它们如此。querySelectorAll如果您使用合适的表达式,这并不是真正必要的。与普通 javascript 中存在的一个或多个父/同级选择器结合执行此操作可以相当轻松地进行 DOM 导航和操作。这也意味着您可以对所有按钮使用同一段代码......希望它有所帮助。<?php&nbsp; &nbsp; while( $version > 0 ) {&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; $command = escapeshellcmd( "C:/Python38/python.exe C:/xampp/htdocs/Ensemble/login/test.py $email $version" );&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; $output = shell_exec("$command 2>&1");&nbsp; &nbsp; &nbsp; &nbsp; printf('&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <button data-version="%d">Toggle</button>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <div style="display:none">%s</div>',&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $version,&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $output&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; );&nbsp; &nbsp; &nbsp; &nbsp; $version--;&nbsp; &nbsp; }&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; echo "&nbsp; &nbsp; <script>&nbsp; &nbsp; &nbsp; &nbsp; Array.from( document.querySelectorAll('button') ).forEach( bttn=>{&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; bttn.addEventListener('click', function(e){&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; let version=this.dataset.version;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; let div=this.nextElementSibling;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; div.style.display=div.style.display=='block' ? 'none' : 'block';&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; });&nbsp; &nbsp; &nbsp; &nbsp; })&nbsp; &nbsp; </script>";?>

守着星空守着你

代替<div style= "display:none;" "id="content-' . $version . '">到<div style= "display:none;" id="content-' . $version . '">并尝试。
打开App,查看更多内容
随时随地看视频慕课网APP