使用参数动态引用json对象

Dynamically reference json object using parameters

本文关键字:json 对象 引用 动态 参数      更新时间:2023-09-26

我得到了:

Uncaught TypeError: Cannot read property '0' of undefined

尝试使用参数动态引用javascript对象时。虽然当我尝试传递单个参数virtual_page_no时,它正在工作,但它在传递2个参数时开始给出错误。

// Json list
var patients = {
    "patient_1": [
        {
            "page_no": "3",
            "quest_response_headline": "Question1",
            "quest_response": "Response1",
            "quest_next_link": "View Answer"
        },
        {
            "page_no": "4",
            "quest_response_headline": "Question2",
            "quest_response": "Response2",
            "quest_next_link": "Next Question >"
        }
    ]
}
var current_virtual_page = 0;
var next_virtual_page = current_virtual_page + 1;
function quest_response_text(i, virtual_page_no) {
    var quest_response_headline = patients.patient_i[virtual_page_no].quest_response_headline;
    var quest_response = patients.patient_i[virtual_page_no].quest_response;
    var quest_next_link = patients.patient_i[virtual_page_no].quest_next_link;
    $('.quest-response-headline').text(quest_response_headline);
    $('.quest-response').text(quest_response);
    $('.quest-next-link').text(quest_next_link);
}
// init
quest_response_text(1, current_virtual_page);
// When user click on view answer or next question link
$('.quest-next-link').on('click', function () {
    quest_response_text(next_virtual_page);
});

如果您想使用i变量动态访问patients.patient_1,请尝试使用:

patients['patient_' + i]

所以它应该看起来像:

var quest_response_headline = patients['patient_' + i][virtual_page_no].quest_response_headline;