Я изучаю jQuery, и у меня возникают проблемы, пытаясь понять, как выбирать элементы в многомерном массиве. У меня есть список выбора с идентификаторами базы данных, и я хочу установить var с полем затрат в базе данных в соответствии с выбранным идентификатором. У меня есть все части, за исключением перевода выбранного идентификатора в стоимость. Может кто-то, пожалуйста, помогите мне с этим правильно, пожалуйста?
var rangeListData = [{"idrange_list":"1","range_cost":"0","target_range_name":"Self Only"},{"idrange_list":"2","range_cost":"1","target_range_name":"1 Space"},{"idrange_list":"3","range_cost":"2","target_range_name":"2 Spaces"},{"idrange_list":"4","range_cost":"3","target_range_name":"3 Spaces"},{"idrange_list":"5","range_cost":"4","target_range_name":"4 Spaces"},{"idrange_list":"6","range_cost":"5","target_range_name":"5 Spaces"}];
$('#slctPowerTarget').change(function () {
var targetID = $('#slctPowerTarget').val();
var cost $.grep(rangeListData, function(e) { return e.idrange_list == targetID }); // this is the line that is wrong
$('#spanTotalEffectsCost').text(cost);
});
Если я помещаю targetID в то, где это стоимость, он перечисляет штраф. Но когда я пытаюсь понять это, ничего не происходит. Это некорректно, и я не уверен, что еще попробовать. Я думаю, что я понимаю, как idrange_list == targetID должен соответствовать им, но не уверен, как вызвать соответствующий range_cost.
Спасибо за любую помощь, которую вы можете предложить! Я читаю документы на jquery.com, но, похоже, не могу обернуть вокруг себя голову.
Вы можете сделать это :-
// Get the Multidimensional Array first
var data = $.grep(rangeListData, function (e) {
return e.idrange_list === targetID
});
// Get the range cost from the array
var cost = data[0].range_cost;
// Check the value in console for debugging purpose
console.log(cost);
Вот окончательный код. Я также добавил предложение IF в том случае, если они выбирают настройку по умолчанию. Таким образом, он будет сброшен вместо того, чтобы бросать ошибку и следить за работой страниц независимо от того, изменяют ли они выпадающие списки или возвращаются к "Выбрать..."
$('#slctPowerRange').change(function () {
var rangeID = $('#slctPowerRange').val();
if (rangeID > 0) {
var rdata = $.grep(rangeListData, function (e) {
return e.idrange_list === rangeID
});
var rcost = rdata[0].range_cost;
}
else {
var rcost = 0 ;
}
$('#hdnRangeCost').val(rcost);
});