Javascript 无法设置属性';innerHTML';未定义的
我一直在尝试在我的站点上实现一个模式,该模式使用ajax调用动态加载内容 我偶然发现了这个,它显示了这个,经过一点修改后,它将完全适合我的需要 该演示在JSFIDLE上运行得非常好,但在我的开发环境中,出现了以下错误: 未捕获的TypeError:无法设置未定义的属性“innerHTML” 追溯到我的脚本,它说htmlData是未定义的,但它是在它上面定义的 运行调用的脚本:Javascript 无法设置属性';innerHTML';未定义的,javascript,jquery,ajax,laravel-5.1,Javascript,Jquery,Ajax,Laravel 5.1,我一直在尝试在我的站点上实现一个模式,该模式使用ajax调用动态加载内容 我偶然发现了这个,它显示了这个,经过一点修改后,它将完全适合我的需要 该演示在JSFIDLE上运行得非常好,但在我的开发环境中,出现了以下错误: 未捕获的TypeError:无法设置未定义的属性“innerHTML” 追溯到我的脚本,它说htmlData是未定义的,但它是在它上面定义的 运行调用的脚本: <script> (function() { var infoModal = $('#myModal
<script>
(function() {
var infoModal = $('#myModal');
$('.modal-toggle').on('click', function(){
$.ajax({
type: "GET",
url: '/api/menu-item/'+$(this).data('id'),
dataType: 'json',
error: function(data){
fakeResponse = {"id":4,"menu_category_id":446,"name":"kunzereichert","description":"Dolores impedit ut doloribus et a et aut.","price":"999.99","created_at":"2015-04-10 05:55:23","updated_at":"2015-04-10 05:55:23"}
;
var htmlData = '<ul><li>';
htmlData += fakeResponse.name;
htmlData += '</li></ul>';
infoModal.find('#modal-body')[0].innerHTML = htmlData;
}
});
});
})(jQuery);
</script>
(功能(){
var infoModal=$(“#myModal”);
$('.modal toggle')。打开('click',function(){
$.ajax({
键入:“获取”,
url:'/api/菜单项/'+$(this.data('id'),
数据类型:“json”,
错误:函数(数据){
FakerResponse={“id”:4,“菜单类别id”:446,“名称”:“kunzereichert”,“描述”:“Dolores impedit ut doloribus et a et aut.”,“价格”:“999.99”,“创建时间”:“2015-04-10 05:55:23”,“更新时间”:“2015-04-10 05:55:23”}
;
var htmlData='- ';
htmlData+=fakeResponse.name;
htmlData+='
';
infoModal.find('#modal body')[0].innerHTML=htmlData;
}
});
});
})(jQuery);
我的javascript不是很流利,所以如果您能帮助我解释为什么会出现这个错误,我将不胜感激。我只是尝试从JSON响应加载一些信息,然后显示在模式中
如果有更好的方法,那么我愿意接受你的建议
编辑:这是我的页面的HTML代码
@extends('sbadmin')
@section('content')
<div class="col-lg-10 col-lg-offset-1">
<h1><i class="fa fa-users"></i> Staff</h1>
<div class="table-responsive">
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>Name</th>
<th></th>
</tr>
</thead>
<tbody>
@foreach ($staff as $employee)
<tr>
<td>{{ $employee->first_name }} {{ $employee->last_name }}</td>
<td><button type="button" class="modal-toggle" data-toggle="modal" data-target="#myModal" data-id="{{ $employee->id }}">Disable</button><a href="{{ url('staff/regularhours/' . $employee->id) }}" class="btn btn-primary">Staff Details</a> <a href="{{ url('staff/regularhours/' . $employee->id) }}" class="btn btn-success">Regular Hours</a></td>
</tr>
@endforeach
</tbody>
</table>
</div>
{!! $staff->render() !!}
</div>
<!-- Modal -->
<div id="myModal" class="modal fade" role="dialog">
<div class="modal-dialog">
<!-- Modal content-->
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal">×</button>
<h4 class="modal-title">Modal Header</h4>
</div>
<div class="modal-body">
<p></p>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
</div>
</div>
</div>
</div>
<script>
(function() {
var infoModal = $('#myModal');
$('.modal-toggle').on('click', function(){
$.ajax({
type: "GET",
url: '/api/menu-item/'+$(this).data('id'),
dataType: 'json',
error: function(data){
fakeResponse = {"id":4,"menu_category_id":446,"name":"kunzereichert","description":"Dolores impedit ut doloribus et a et aut.","price":"999.99","created_at":"2015-04-10 05:55:23","updated_at":"2015-04-10 05:55:23"}
;
var htmlData = '<ul><li>';
htmlData += fakeResponse.name;
htmlData += '</li></ul>';
infoModal.find('#modal-body')[0].innerHTML = htmlData;
}
});
});
})(jQuery);
</script>
@endsection
@extends('sbadmin'))
@节(“内容”)
工作人员
名称
@foreach(员工为$employee)
{{$employee->first_name}{{{$employee->last_name}
使残废
@endforeach
{!!$staff->render()!!}
&时代;
模态头
接近
(功能(){
var infoModal=$(“#myModal”);
$('.modal toggle')。打开('click',function(){
$.ajax({
键入:“获取”,
url:'/api/菜单项/'+$(this.data('id'),
数据类型:“json”,
错误:函数(数据){
FakerResponse={“id”:4,“菜单类别id”:446,“名称”:“kunzereichert”,“描述”:“Dolores impedit ut doloribus et a et aut.”,“价格”:“999.99”,“创建时间”:“2015-04-10 05:55:23”,“更新时间”:“2015-04-10 05:55:23”}
;
var htmlData='- ';
htmlData+=fakeResponse.name;
htmlData+='
';
infoModal.find('#modal body')[0].innerHTML=htmlData;
}
});
});
})(jQuery);
@端部
未捕获类型错误:无法设置未定义的属性'innerHTML'错误实际上是指infoModal.find('#modal body')[0]
部分,而不是htmlData
部分
因此,出现此错误是因为它说明infoModal.find(“#modal body”)[0]
不存在。在使用源代码的演示中,它有一个与您的var infoModal=$(“#myModal”)相关的
代码>
div中有一个
。这就是infoModal.find('#modal body')[0]
试图查找的内容。因此,您的错误是说find()
要查找的元素不存在,您正在尝试设置其innerHTML
因此,请检查您的HTML,并确保您复制了演示中的HTML,或者至少复制了演示中的
部分
编辑
您的HTML显示您的元素是
,但您的调用是infoModal.find(“#modal body”)[0]
,它正在查找modal body
的ID。尝试将其更改为:
infoModal.find('.modal body')[0].innerHTML
您使用的模态body是类名,但您可以通过Id名称访问
你可以更改这个代码
infoModal.find('#modal-body')[0].innerHTML = htmlData;
到
或
这很好用
或者addid name ismodal body$(“#myModal”)
是一个jQuery选择器,用于查找id为myModal
的HTML元素,因此您应该确保HTML中存在该元素。您可能需要阅读函数-您将看到error
属性实际上是“请求失败时要调用的函数”。您可能需要在请求成功时添加success
属性(或将error替换为)?你确定在divid=modal body
中有divid=myModal
@MKA我已经为我的modal.changeinfoModal.find(“#modal body”)[0]添加了HTML代码
toinfoModal.find('.modal body')[0]。innerHTML=htmlData代码>这解决了它。我没有在模态体中包含id=“模态体”
。这么简单的错误!谢谢,最好是infoModal.find('.modal body').html()代码>不用担心@James。我们都在那里看了好几个小时的代码,结果证明这是一个简单的修复方法。@bleeted0d也可以。谢谢你的帮助。我的意思是infoModal.find('\modelbodbody').html()
,使用.html()
,因为您已经在使用jQuery;)
infoModal.find('.modal-body')[0].innerHTML = htmlData;
$('.modal-body')html(htmlData);