html 为什么相同的getElementById代码只适用于一个部分,而不适用于第二个部分?[已关闭]

eni9jsuy  于 9个月前  发布在  其他
关注(0)|答案(1)|浏览(83)

已关闭此问题为not reproducible or was caused by typos。它目前不接受回答。

此问题是由打印错误或无法再重现的问题引起的。虽然类似的问题可能是on-topic在这里,这一个是解决的方式不太可能帮助未来的读者。
5天前关闭。
Improve this question
我有2个领域(机器和工厂),需要从用户在输入字段中选择自动生成。“Machine”为下拉选项设置了数组,而“plant”为下拉选项设置了硬编码选项。工厂正在工作,并自动生成标签上的正确位置。机器不会。相同的代码段被用于填充字段,我找不出为什么一个工作而另一个不工作。
我对这两个部分使用了相同的方法(getElementById)。我试着删除工作部分,看看是否有什么东西是重复的,没有变化。我试着交换名字和ID,看看它是否可能指向错误的方向,也没有改变。我验证了CSS是正确的交换两个字段,并得到了“植物”在机器部分没有问题。在这里查看完整代码:github link

<!-- in the head portion-->
<script type="text/JavaScript">
        var machine = ['','WH','1','2','3','4','5','6','7','8','9','10','11','12','13','14','15','16','17','18','19','20',
        '21','22','23','24','25','26','27','28','29','30','31','32','33','34'];
        for (i=0; i < 99; i++) {
            var opt = Math.floor(Math.random() * 99);
            machine.push(opt);
        }
        
        $(function() {
            var options = '';
            for (var i = 0; i < machine.length; i++) {
                options += '<option value="' + machine[i] + '">' + machine[i] + '</option>';
            }
            $('#machine').html(options);
        });
        </script>

<!-- in the body portion-->
<fieldset class="input">
            <label for="item-number">item number: </label>
            <input id="order-number" name="order-number" type="text" required />
            <label for="machine">machine
                <select id="machine" name="machine" onchange="myFunction2()">
                    <option value="">(select type)</option>
                </select>
            </label>
            <label for="plant">PLANT
                <select id="plant" name="plant" onchange="myFunction1()">
                    <option value="">(select plant)</option>
                    <option value="1">SP</option>
                    <option value="2">CT</option>
                    <option value="3">PF</option>
                    <option value="4">RN</option>
                    <option value="5">MI</option>
                    <option value="6">KY</option>
                </select>
            </label>
            <label for="copies">copies: </label>
            <input id="copies" name="copies" type="text" required />
            <button class="glow-on-hover" type="submit" onclick="SubmitEvent" id="submitBtn">SUBMIT</button>
        </fieldset>

<!-- lower in the body portion-->
<div class="plt">
                <script>
                    const plt1 = document.getElementById("plant").value
                    function myFunction1() {
                        var mylist = document.getElementById("plant");
                        document.getElementById("disp").value = plant.options[plant.selectedIndex].text;
                    }
                </script>
                <p><input type="text" id="disp" size="1">-</p>
            </div>
            <div class="mch">
                <script>
                    const mch1 = document.getElementById("machine").value
                    function myFunction2() {
                        var mylist2 = document.getElementById("machine");
                        document.getElementById("disp2").value = machine.options[machine.selectedIndex].text;
                    }
                </script>
llmtgqce

llmtgqce1#

TYVM对那些帮助,特别是那些花时间分解这足够,我可以理解的关系,具体的作品。这是最终的解决方案:

<!-- This auto populates the specific machine used on the label -->
                <script>
                    const mch1 = document.getElementById("mylist2").value
                    function myFunction2() {
                        var mylist2 = document.getElementById("machine");
                        document.getElementById("disp2").value = mylist2.options[mylist2.selectedIndex].text;
                    }
                </script>
                <p><input type="text" id="disp2" size="1"></p>
            </div>

相关问题