引用错误: 未定义显示框



如何显示选择选项 = category_id 的复选框。

尝试显示复选框,在我选择一个选项后。

我想要同样的东西。但是有了拉拉维尔和数据库

火狐浏览器中的检查器

复选框

索引刀片.php

<form action="{{ route('computers.store') }}" method="post">
    {{ csrf_field() }}
    <div class="form-group">
        <select id="select" name="category_id" class="form-control" onchange="displayBoxes()">
            @foreach($categories as $category)
                <option data-description="{{ $category->description }}" value="{{ $category->id }}">{{ $category->name }}</option>
            @endforeach
        </select>
    </div>
    <div class="form-group">
        <p id="description"></p>
    </div>
    <div class="form-group d-none box17">
        <p></p>
        @foreach ($computers->where('category_id', 2) as $computer)
            <input type="checkbox" id="{{ $computer->latin }}">
            <label for="{{ $computer->latin }}">{{ $computer->name }}</label>
        @endforeach
    </div>
    <div class="form-group d-none box18">
        <p></p>
        @foreach ($computers->where('category_id', 3) as $computer)
            <input type="checkbox" id="{{ $computer->latin }}">
            <label for="{{ $computer->latin }}">{{ $computer->name }}</label>
        @endforeach
    </div>
    <div class="form-group d-none box19">
        <p></p>
        @foreach ($computers->where('category_id', 4) as $computer)
            <input type="checkbox" id="{{ $computer->latin }}">
            <label for="{{ $computer->latin }}">{{ $computer->name }}</label>
        @endforeach
    </div>
    <div class="form-group">
        <button class="btn btn-primary">ادامه</button>
    </div>
</form>

脚本.js

    function displayBoxes() {
        let option = document.querySelector('#select');
        let boxes = document.querySelectorAll('div');
        boxes.forEach(function(el) {
            el.classList.add('d-none');
        });
        document.querySelector('.box' + option.options[option.selectedIndex].value).classList.remove('.d-none');
    }

尝试从 select 元素中删除onchange="displayBoxes()",然后在script.js文件中添加一个侦听此元素的change事件的eventListener。您的代码应如下所示:

const selectElement = document.querySelector('#select');
selectElement.addEventListener('change', (event) => {
    let boxes = document.querySelectorAll('div');
    boxes.forEach(function(e) {
        e.classList.add('d-none');
    });
});
document.querySelector('.box' + selectElement.options[selectElement.selectedIndex].value).classList.remove('.d-none');

查看此链接以获取更多信息。
还有这个要阅读eventListener.

最新更新