Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在PHP中,ID在while循环中未按预期工作_Javascript_Python_Php_Dropdown_Hidden - Fatal编程技术网

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

Javascript 在PHP中,ID在while循环中未按预期工作,javascript,python,php,dropdown,hidden,Javascript,Python,Php,Dropdown,Hidden,我试图创建一个while循环,为每个$version值回显一个按钮。shell_exec()从Python文件返回一个值,并响应唯一的$version值。为此,基本目标是创建一个按钮数量取决于版本值的页面 然后,用户可以单击任何特定按钮并访问该特定按钮(版本)的数据。为此,我尝试将变量与ID混合,但似乎不起作用。我能做些什么来解决这个问题?现在没有一个按钮有响应 代码: 以下内容可能会有所帮助-虽然就Python调用而言,它没有经过测试,但我认为如果我理解正确,其他代码应该可以正常工作 每个ID

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

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

代码:


以下内容可能会有所帮助-虽然就Python调用而言,它没有经过测试,但我认为如果我理解正确,其他代码应该可以正常工作

每个ID在DOM中都必须是唯一的,我想这就是为什么您试图通过在每个ID中添加
$version
编号来实现它们的唯一性。如果将
querySelectorAll
与合适的表达式一起使用,则实际上不需要这样做。结合vanilla javascript中存在的一个或多个父/同级选择器,可以非常轻松地进行DOM导航和操作。这也意味着你可以对所有的按钮使用相同的代码。。。希望能有帮助

<?php
    while( $version > 0 ) {
    
        $command = escapeshellcmd( "C:/Python38/python.exe C:/xampp/htdocs/Ensemble/login/test.py $email $version" ); 
        $output = shell_exec("$command 2>&1");



        printf('
            <br />
            <br />
            
            <button data-version="%d">Toggle</button>
            <div style="display:none">%s</div>', 
            $version,
            $output 
        );

        $version--;
    }
    
    echo "
    <script>
        Array.from( document.querySelectorAll('button') ).forEach( bttn=>{
            bttn.addEventListener('click', function(e){
                let version=this.dataset.version;
                let div=this.nextElementSibling;
                    div.style.display=div.style.display=='block' ? 'none' : 'block';
                
            });
        })
    </script>";
?>
替换


确保
$output
中实际填充了数据。使用
var\u转储($output)。请确保没有换行符(\r\n),使用
trim($output)
,并确保将任何数字转换为整数,否则增量将无法工作。等式:
(INT)微调($output)
。作为一个好的开始@NVRM做了一些修复。查看我的编辑bc有一个新问题content.style.display=content.style.display==“无”?“块”:“无”@Somen Banerjee看看我上面的编辑。出现了新问题
<?php
    while( $version > 0 ) {
    
        $command = escapeshellcmd( "C:/Python38/python.exe C:/xampp/htdocs/Ensemble/login/test.py $email $version" ); 
        $output = shell_exec("$command 2>&1");



        printf('
            <br />
            <br />
            
            <button data-version="%d">Toggle</button>
            <div style="display:none">%s</div>', 
            $version,
            $output 
        );

        $version--;
    }
    
    echo "
    <script>
        Array.from( document.querySelectorAll('button') ).forEach( bttn=>{
            bttn.addEventListener('click', function(e){
                let version=this.dataset.version;
                let div=this.nextElementSibling;
                    div.style.display=div.style.display=='block' ? 'none' : 'block';
                
            });
        })
    </script>";
?>