代码之家  ›  专栏  ›  技术社区  ›  rajesh

如何在javascript变量[duplicate]中获取jquery select2的选定值

  •  -2
  • rajesh  · 技术社区  · 7 年前

    我使用了多个jquery select2

    在我的html中

    <select class="select2_demo_3 form-control" style="color: #1c84c6" id="selectSubject" name="selectSubject">
    <option value="">Select a Subject</option>
    <?php
    $query= "SELECT * FROM `tblsubject` WHERE `status`='1'";
    $found=mysqli_query($con,$query);
    while($row = mysqli_fetch_array($found)){
    ?>
    <option value="<?php echo($row['id']);?>"><?php echo($row['subject_name']);?></option>
    <?php
    }
    ?>
    

    <select class="select2_demo_3 form-control" id="selectTopic" name="selectTopic">
    <option value="">Select a Topic</option>
    <?php
    $query= "SELECT * FROM `tbltopic` WHERE `status`='1'";
    $found=mysqli_query($con,$query);
    while($row = mysqli_fetch_array($found)){
        ?>
        <option value="<?php echo($row['id']);?>"><?php echo($row['topic_name']);?></option>
        <?php
    }
    ?>
    

    然后在我的剧本中

    $(document).ready(function(){
    $(".select2_demo_3").select2();
    });
    

    问题是,虽然我在每个select的id标记中都给出了它,但在检查元素时,我得到了一个不同的id,我认为jquery内部正在设置这个id。 screenshot of inspect

    正如你所看到的,它显示了我给定的id,即“selectSubject”,但当我在脚本中写作时

        <script type="text/javascript">
            var questionType=document.getElementById("selectSubject").value;
        </script>
    

    “Uncaught TypeError:无法读取null的属性‘value’”错误

    我做错了什么?我可以在javascript中获得select2值吗?或者正确的方法是什么?

    已编辑:将getElementById中的id更正为“selectSubject”。

    1 回复  |  直到 7 年前
        1
  •  0
  •   Sanchit Patiyal    7 年前

    你正在得到 "Uncaught TypeError: Cannot read property 'value' of null" error 因为您的脚本是在加载DOM之前运行的。因此,当脚本运行时,它无法找到导致 document.getElementById("selectSubject") 作为空值。在正文之后移动脚本部分将解决您的问题。

    <script>
      console.log("script before body tag: %o", document.getElementById("test")); // null
    </script>
    <div id="test">Hello World</div>
    <script>
      console.log("script afterbody tag: %o", document.getElementById("test")); // <div id="test" ...
    </script>