设置'display'属性的Javascript函数在某些情况下有效,而在其他情况下无效

时间:2017-02-21 01:19:21

标签: javascript php html css

在我的程序中,我根据用户选择的一组单选按钮显示或不显示某些元素。我使用“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>

1 个答案:

答案 0 :(得分:0)

将输出JavaScript 下面的PHP代码放在需要显示/隐藏的元素中。

在渲染元素之前,您的函数正在执行。你确实包含了超时,但它只设置为1毫秒。向下移动脚本应该可以让你完全摆脱超时。