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