我认为我改变了范围问题。
我有一个选择框,可以为更改事件触发内联代码。
我删除了内联代码并改为创建了一个onchange函数。在我这样做之后,grep似乎打破了。它现在没有找到对象的属性。
旧代码 - 剥离
function assignHiddenValue(o,s,h,n) {
...
d = oCombListData;
var eID = jQuery(this).val();
var edata = jQuery.grep(d, function (e) {
return e.idpower_effects_list === eID
});
console.log('edata = ');
console.log(edata);
var ecost = edata[0].effect_cost;
}
工作得很好。
新代码
jQuery("select[name='slctEffect']").change(function ($) {
...
d = oCombListData;
var eID = jQuery(this).val();
var edata = jQuery.grep(d, function (e) {
return e.idpower_effects_list === eID
});
console.log('edata = ');
console.log(edata);
var ecost = edata[0].effect_cost;
});
现在我收到了这个错误。
Uncaught TypeError: Cannot read property 'effect_cost' of undefined
是什么给出的? d(对象数组)和eID(int)在控制台中显示数据。但是现在grep说它无法找到对象的属性。
非常感谢你的帮助!
答案 0 :(得分:0)
在你的"内联"代码我假设您正在做这样的事情:
<select name="slctEffect" onchange="assignHiddenValue(...)">
...
</select>
当你的assignHiddenValue函数中的这一行var eID = jQuery(this).val();
被调用时,&#34;这个&#34;将是窗口。
在&#34; onchange&#34;在调用var eID = jQuery(this).val();
时,从新代码中运行,&#34;此&#34;将是选择