开发者问题收集

Laravel View 中的 Document.getElementById(...) 为 Null

2018-12-01
1978

控制台中的消息

TypeError: document.getElementById(...) is null.

Blade (包含要删除的按钮)

<td>
    <a href="#" class="btn btn-primary btn-sm"><i class="fa fa-pencil"></i></a>
    <button type="button" class="btn btn-danger btn-sm"
            onclick="deleteSaleItem({{ $sale->id }})">
        i class="fa fa-trash"></i>
    </button>
    <form id="delete-form-{{ $sale->id }}" action="{{ route('secretary.sales.destroy.item',$sale->id) }}" method="POST"
          style="display:none;">
        @csrf
        @method('DELETE')
    </form>
</td>

Javascript 实现

<script>

    function deleteSaleItem(id){
        const swalWithBootstrapButtons = swal.mixin({
        confirmButtonClass: 'btn btn-success',
        cancelButtonClass: 'btn btn-danger',
        buttonsStyling: false,
        })

        swalWithBootstrapButtons({
        title: 'Are you sure?',
        text: "You won't be able to revert this!",
        type: 'warning',
        showCancelButton: true,
        confirmButtonText: 'Yes, delete it!',
        cancelButtonText: 'No, cancel!',
        reverseButtons: true
        }).then((result) => {
        if (result.value) {
            event.preventDefault();
            document.getElementById('delete-form-'+id).submit();
        } else if (
            // Read more about handling dismissals
            result.dismiss === swal.DismissReason.cancel
        ) {
            swalWithBootstrapButtons(
            'Cancelled',
            'Your data is safe :)',
            'error'
            )
        }
        })
    }
</script>

我需要知道此代码中存在什么问题,导致结果为 null。谢谢。

1个回答

您的代码中只有一个 getElementById。

document.getElementById('delete-form-'+id)

因此,可能是“id”变量为空或为 null,并且您检索的元素变为 null。

尝试在 document.getElementById 代码之前调试或 console.log 您的“id”变量,以查看变量发生了什么。

Mg Thar
2018-12-01