为了账号安全,请及时绑定邮箱和手机立即绑定

无法通过动态和单独单击复选框来显示另一个复选框

无法通过动态和单独单击复选框来显示另一个复选框

PHP
蛊毒传说 2022-01-14 16:55:19
我有一个带有几个模式列表的第一个复选框。想要我想做的很简单:当我检查一个模式时,我想让他的个人 div “list-right”出现在下面,这是另一个复选框。这是我的代码:<div>    <div>        <h4>Select your schema(s) :</h4>        <div id="list-schemas">            <?php                foreach ($schemas as $elt) {                    echo '<input type="checkbox" name="schemas[]" value="' . $elt->getSchema() . '"/>' . $elt->getSchema() . '<br />';                }            ?>        </div>    </div>    <h4>Privileges on tables by selected schemas :</h4>    <div id="div-privileges">        <?php            foreach ($schemas as $elt) {                echo '<div class="list-right" id="' . $elt->getSchema() . '">';                    echo '<label for="list-right">' . $elt->getSchema() . ' :</label><br />';                    echo '<input type="checkbox" name="privileges[' . $elt->getSchema() . '][]" value="REVOKE"/> REVOKE ? <br />';                    echo '<input type="checkbox" name="privileges[' . $elt->getSchema() . '][]" value="ALL"/> ALL PRIVILEGES ? <br />';                    echo '<hr>';            }        ?>    </div></div>我设法显示 = 'none' ALL THE div "list-right"。如你看到的 :var listRight=document.getElementsByClassName("list-right");for (var i = 0; i < listRight.length; i ++) {    listRight[i].style.display = 'none';}没有 JavaScript 函数我有什么: https ://image.noelshack.com/fichiers/2019/38/3/1568790896-capture2.png我拥有的 JavaScript 函数: https ://image.noelshack.com/fichiers/2019/38/3/1568790893-capture.png我想要什么: https ://image.noelshack.com/fichiers/2019/38/3/1568790898-capture3.png但我不能让它们单独出现,并且动态地......有谁能够帮我..?
查看完整描述

3 回答

?
一只斗牛犬

TA贡献1784条经验 获得超2个赞

使用它来显示对应的 div


<div id="list-schemas">

        <?php

            foreach ($schemas as $elt) {

                echo '<input type="checkbox" name="schemas[]" value="' .$elt->getSchema() . '" class="schema"/>' . $elt->getSchema() . '<br />';

            }

        ?>

    </div>

这在你的javascript中


<script>

var schmas=document.getElementsByClassName("schema");


for (var i = 0; i < schema.length; i++) {

    schema[i].onChange = function(e) {

    var schema = e.value;

        if (e.checked) {

            showMe(schema);

        } else {

          hideMe(schema);

          }

    }

}

function showMe(schema) {

   document.getElementById(schema).style.display= block;

}

 function hideMe(schema) {

   document.getElementById(schema).style.display= = none;

}

</script>

但是请记住通过在 css 中使用 display:none 来隐藏所有列表权限的 div


查看完整回答
反对 回复 2022-01-14
?
千万里不及你

TA贡献1784条经验 获得超9个赞

最后它是正确的,这是代码:


磷酸:


<div>


    <div>


        <h4>Select your schema(s) :</h4>

        <div id="list-schemas">

            <?php

                foreach ($schemas as $elt) {

                    echo '<input id="' . $elt->getSchema() . '" onclick="show_checkboxes(\''.$elt->getSchema().'\');" type="checkbox" name="schemas[]" value="' . $elt->getSchema() . '"/>' . $elt->getSchema() . '<br />';

                }

            ?>

        </div>  


    </div>


    <h4>Privileges on tables by selected schemas :</h4>

    <div id="div-privileges">


        <?php

            foreach ($schemas as $elt) {

                echo '<div class="list-right" id="list_right_'.$elt->getSchema().'">';


                    echo '<label for="list-right">' . $elt->getSchema() . ' :</label><br />';

                    echo '<input type="checkbox" name="privileges[' . $elt->getSchema() . '][]" value="REVOKE"/> REVOKE ? <br />';

                    echo '<input type="checkbox" name="privileges[' . $elt->getSchema() . '][]" value="ALL"/> ALL PRIVILEGES ? <br />';

                    echo '<hr>';

                    echo '<input type="checkbox" name="privileges[' . $elt->getSchema() . '][]" value="SELECT"/> SELECT ? <br />';

                    echo '<input type="checkbox" name="privileges[' . $elt->getSchema() . '][]" value="INSERT"/> INSERT ? <br />';

                    echo '<input type="checkbox" name="privileges[' . $elt->getSchema() . '][]" value="UPDATE"/> UPDATE ? <br />';

                    echo '<input type="checkbox" name="privileges[' . $elt->getSchema() . '][]" value="DELETE"/> DELETE ? <br />';

                    echo '<hr>';

                    echo '<input type="checkbox" name="privileges[' . $elt->getSchema() . '][]" value="CREATE"/>CREATE ? <br />';


                echo '</div>';

            }

        ?>


    </div>


</div>

Javascript:


/*Way to display none all the list-right divs*/

var listRight=document.getElementsByClassName("list-right");


for (var i = 0; i < listRight.length; i ++) {

    listRight[i].style.display = 'none';

}



/*function to display block when we click on the right schema*/

function show_checkboxes(schema){

   if(document.getElementById(schema).checked){

       document.getElementById("list_right_"+schema).style.display = "block";

   }

   else{

       document.getElementById("list_right_"+schema).style.display = "none";

   }

}

感谢您的帮助。


查看完整回答
反对 回复 2022-01-14
?
杨__羊羊

TA贡献1943条经验 获得超7个赞

如果你想动态地这样做,你将不得不使用客户端脚本,比如 javascript。将 onclick 函数添加到您的复选框,如下所示:


echo '<input onclick="show_checkboxes(\''.$elt->getSchema().'\');" type="checkbox" name="schemas[]" value="' . $elt->getSchema() . '"/>' . $elt->getSchema() . '<br />';

此外,将您的 list-right div 更改为:


echo '<div class="list-right" id="list_right_'.$elt->getSchema().'" style="display:none;">';

然后像这样添加 show_checkboxes 函数:


echo'

<script>

function show_checkboxes(schema){

   if(this.checked == true){

       document.getElementById("list_right_"+schema).style.display = "block";

   }

   else{

       document.getElementById("list_right_"+schema).style.display = "none";

   }

}

</script>';


查看完整回答
反对 回复 2022-01-14
  • 3 回答
  • 0 关注
  • 111 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信