虽然PHP循环Javascript中
问题描述:
<script type="text/javascript">
if(<?php echo json_encode($re=='reject'); ?>){
//if response is reject
document.getElementById('hide').style.display = "none";
document.getElementById('onreject').style.display="block";
}
else if(<?php echo json_encode($re=='approve'); ?>){
//if response is approve
document.getElementById('hide').style.display = "none";
document.getElementById('onapprove').style.display = "block";
}
else
{
document.getElementById('hide').style.display="block";
}
</script>
我想这是一个while循环直到<?php $responseanswer = mysqli_fetch_array($result); ?>
我如何呢?
答
你的意思是?
无论如何,像这样结合JavaScript和PHP在我看来是不可取的。
<?
while($responseanswer = mysqli_fetch_array($result)) {
?>
if(<?php echo json_encode($re=='reject'); ?>){
//if response is reject
document.getElementById('hide').style.display = "none";
document.getElementById('onreject').style.display="block";
}
else if(<?php echo json_encode($re=='approve'); ?>){
//if response is approve
document.getElementById('hide').style.display = "none";
document.getElementById('onapprove').style.display = "block";
}
else
{
document.getElementById('hide').style.display="block";
}
<?
}
?>
答
为了扩大在第一个答案,这里是一个可能的解决方案,不涉及来回切换JavaScript和PHP之间太多。我个人是模板引擎的粉丝(如Smarty),但这是我的下一个首选项(全部逻辑在PHP代码中,循环结束时的JavaScript只是显示为你工作)。
<script>
<?php
while($responseanswer = mysqli_fetch_array($result)) {
// This is probably not how your code does it, but I don't know your table structure
$re = $responseanswer[0];
$div_to_show = "";
// whether to show the element with ID "hide"
$hide_display_style = 'none';
// Decide now what divs we want visible and hidden
if($re == 'reject') $div_to_show = 'onreject';
else if($re == 'approve') $div_to_show = 'onapprove';
else $hide_display_style='block';
echo "document.getElementById('hide').style.display = '$hide_display_style';\n";
if($div_to_show) {
echo "document.getElementById('$div_to_show').style.display = 'block';\n";
}
}
?>
</script>
答
Ewww。这使得它很难阅读,我认为这样的解决方案会更好。 (但不是最好的)。 Best可能会有一个js函数,它知道如何处理要隐藏和显示的内容,或者在标记元素自身内添加样式,或者不显式输出该id。
无论哪种方式,这应该是更具可读性,并会更容易添加额外的元素;
<?php
switch ($re) {
case 'reject':
$styles = array(
'hide' => 'none',
'onreject' => 'block',
'onapprove' => 'none'
);
break;
case 'approve':
$styles = array(
'hide' => 'none',
'onreject' => 'none',
'onapprove' => 'block'
);
default:
$styles = array(
'hide' => 'block',
'onreject' => 'none',
'onapprove' => 'none'
);
}
foreach ($styles as $id => $value) {
echo 'document.getElementById("' , $id, '").style.display="', $value, '";', PHP_EOL;
}
?>
`json_encode()`不是JavaScript编码。 – BoltClock 2011-01-28 20:37:54