首页 > 解决方案 > 由于 javascript 获取 PHP 值,代码无法正常运行,我不知道如何比较它们

问题描述

<div class="content">
            <h1>Üdvözöllek, <?php echo $nickname; ?>! </h2>
            <h4>Válasszon hetet: </h4>

            <select class="select-selected" id="1" name="het" onchange="checkclass()">
                <option disabled selected value>Hét</option>
                <option value="1"><?php echo $sd->format('m.d')," - ", $ed->format('m.d');?></option>
                <option value="2"><?php echo $sd2->format('m.d')," - ", $ed2->format('m.d');?></option>
                <option value="3"><?php echo $sd3->format('m.d')," - ", $ed3->format('m.d');?></option>
            </select>

        </div >
        <div>

            <a id="class">
                <select class="select-selected" id="2" onchange="checksubject()" name="osztaly">
                <option disabled selected value><?php echo $class; ?></option></select>
            </a>
            <a id="subject">
                <select class="select-selected" id="3" name="tantargy">
                <option disabled selected value><?php echo $subject; ?></option></select>
            </a>
            <a id="bontotte"></a>
            <a id="classtwo"></a>
        </div>

        <script>
    function checkclass() {
        var het = document.getElementById('1').value;
        if(1<=het){
            var onosztaly = 
            '<select class="select-selected" name="osztaly">'+
            '<option disabled selected value><?php echo $class; ?>'+
            '<option value="<?php echo $class1; ?>"><?php echo $class1; ?></option>'+
            '<option value="<?php echo $class2; ?>"><?php echo $class2; ?></option>'+
            '<option value="<?php echo $class3; ?>"><?php echo $class3; ?></option>'+
            '<option value="<?php echo $class4; ?>"><?php echo $class4; ?></option>'+
            '<option value="<?php echo $class5; ?>"><?php echo $class5; ?></option>'+
            '<option value="<?php echo $class6; ?>"><?php echo $class6; ?></option>'+
            '<option value="<?php echo $class7; ?>"><?php echo $class7; ?></option>'+
            '</select>';        
            document.getElementById("class").innerHTML =(onosztaly);
        }
        }
    function checksubject() {
        var sub = document.getElementById('2').value;
        var clas = document.getElementById('2').value;
        if(sub == clas){
            var onsub = '<select class="select-selected" id="2" name="tantargy">'+
            '<option disabled selected value><?php echo $subject; ?></option>'+
            '<option value="<?php echo $subject1; ?>"><?php echo $subject1; ?></option>'+
            '<option value="<?php echo $subject2; ?>"><?php echo $subject2; ?></option>'+
            '<option value="<?php echo $subject3; ?>"><?php echo $subject3; ?></option>'+
            '<option value="<?php echo $subject4; ?>"><?php echo $subject4; ?></option>'+
            '</select>';
            document.getElementById("subject").innerHTML =(onsub);
        }
        }

    </script>

所以最后一个不会让它成为选择框来填写,就像另一个名为“osztaly”的框一样。我认为我在 javascript 中的 IF 标记有问题,因为值无法比较:)

标签: javascriptphphtml

解决方案


您已经通过 javascript 覆盖了您自己的选择框

更改此代码

 var onosztaly = 
   '<select class="select-selected" name="osztaly">'+

 var onosztaly = 
   '<select class="select-selected" id="2" onchange="checksubject()" name="osztaly">'+

它会起作用,这意味着当日期更改时选择框的 ID 和更改事件都会丢失

坦率地说你的设计不好,有添加选项和删除选项的有效方法,innerHTML 是很老的风格

题文显示javascript getting PHP values————这种理解是错误的

您的整个代码呈现为运行 HTML 并提供给浏览器,浏览器中不再有 PHP,只有您正在为下拉更改进行的浏览器编码

所以当你认为这实际上是从 PHP 中读取值时,这不是一个正确的理解

您仅在 javascript 中直接读取 HTML 组件值


推荐阅读