类型错误:无法设置未定义的属性“data_id”
2018-07-24
14271
我的 js 代码有些问题,我不知道如何修复它 这是我的代码:
$('#btn_valid').click(function(){
var data = new Array();
var data_id;
var data_picture;
var data_title;
var data_p_picture;
var data_p_title;
var data_s_picture;
var data_s_title;
var data_reaction;
var data_datetime;
var i = 0;
$('.cbx_ac:checked').each(function(){
data_id = $(this).attr('data-id');
data_picture = $(this).attr('data-picture');
data_title= $(this).attr('data-title');
data_p_picture = $(this).attr('data-p_picture');
data_p_title = $(this).attr('data-p_title');
data_s_picture = $(this).attr('data-s_picture');
data_s_title = $(this).attr('data-s_title');
data_reaction = $(this).attr('data-reaction');
data_datetime = $(this).attr('data-datetime');
console.log(data_id); // I Get a value here ( 2564115647_15498456665 )
data[i]['data_id'] = data_id; //Error here : Uncaught TypeError: Cannot set property 'data_id' of undefined
i++;
})
console.log(data);
})
我尝试设置 data[i] = [] 时出现此错误,但似乎不是解决方案:
Error here : Uncaught TypeError: Cannot set property 'data_id' of undefined
3个回答
问题是因为
数据[i]
是
不确定的
。因此,您正在尝试设置
未定义
的属性,因此错误。
要解决此问题,您需要首先在
数据[i]
中创建一个对象,例如:
148486600
但是
值得注意的是,您可以大规模
简化此逻辑并将其干燥。当您访问元素的
data()
方法时,它将返回对象中的所有属性。因此,只要属性名称与要创建的对象的属性名称匹配,只需使用
map()
:
699102356 < /code>
请注意,上面的示例缺少
数据
html中的属性,但这仅仅是为了简洁。您可以轻松地将它们全部添加到生产版本中。
Rory McCrossan
2018-07-24
由于 data[i] 未定义为数组,因此出现错误。
如果您定义
data[i] = {};
则以下语句将起作用。
data[i]['data_id'] = data_id;
vishu
2018-07-24
data[i] 未定义,因此
简单更改
data[i] = {};
data[i]['data_id'] = data_id;
$('#btn_valid').click(function(){
var data = new Array();
var data_id;
var data_picture;
var data_title;
var data_p_picture;
var data_p_title;
var data_s_picture;
var data_s_title;
var data_reaction;
var data_datetime;
var i = 0;
$('.cbx_ac:checked').each(function(){
data_id = $(this).attr('data-id');
data_picture = $(this).attr('data-picture');
data_title= $(this).attr('data-title');
data_p_picture = $(this).attr('data-p_picture');
data_p_title = $(this).attr('data-p_title');
data_s_picture = $(this).attr('data-s_picture');
data_s_title = $(this).attr('data-s_title');
data_reaction = $(this).attr('data-reaction');
data_datetime = $(this).attr('data-datetime');
console.log(data_id); // I Get a value here ( 2564115647_15498456665 )
data[i] = {};
data[i]['data_id'] = data_id; //Error here : Uncaught TypeError: Cannot set property 'data_id' of undefined
i++;
})
console.log(data);
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="button" class="btn" id="btn_valid" value="Click Me" />
<input type="checkbox" data-id="data-id" data-picture="pic1" data-title="title1" id="scales" class="cbx_ac" name="feature"
value="scales" checked />
NullPointer
2018-07-24