在我的程序中,我根据用户选择的一组单选按钮显示或不显示某些元素。我使用“onclick”属性来调用Javascript函数“hideshow(e,x)”,它将第一个参数作为要显示/不显示的元素的类名称,并将第二个参数作为“none”或'排队'。这似乎工作正常。
但有时,我已经知道应该显示哪些元素,所以我不显示单选按钮,只想直接调用hideshow(e,x)。通过在函数中放置一个ALERT语句,我知道该函数实际上已被调用并且正在接收正确的参数。然而,元素的可见性并没有改变。
任何人都可以解释这个,并告诉我如何解决它?
这是代码。我使用变量$ isperson来确定是否收音机:
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Visibility Test</title>
<script>
function hideshow(element,x){
alert ("in hideshow, element:"+element+", x:"+x);
$(element).css("display",x);
var telement = element+"-";
var tx="";
if(x=="none"){tx="inline";}else{tx="none";}
$(telement).css("display",tx);
}
</script>
</head>
<body>
<?
$isperson=1;
if($isperson){
echo " ready to use hideshow <br>";
ob_start();
echo "<script>setTimeout(hideshow('.personInput','inline'),1)</script>";
ob_end_flush();
}else{
echo "<input type='radio' name='bizorper' value='business' onclick=\"" . "hideshow('.personInput','none')" . "\" id='business' checked> Business/organization";
echo "<input type='radio' name='bizorper' value='person' onclick=\"" . "hideshow('.personInput','inline')" . "\" id='person'> person <p>";
}
?>
<p class="personInput" style="display: none"> Normally doesn't display if radio button is 'business', but should if radio button is 'person' or $isperson=1<p></p>
<p class="personInput-" style="display: inline">Normally Displays, unless radio button is 'person' or $isperson=1</p>
<p class="personInput" style="display: none">Normally doesn't display 2;</p>
</body>
</html>
答案 0 :(得分:0)
将输出JavaScript 下面的PHP代码放在需要显示/隐藏的元素中。
在渲染元素之前,您的函数正在执行。你确实包含了超时,但它只设置为1毫秒。向下移动脚本应该可以让你完全摆脱超时。