Question

update: This code is bonkers. The root of the issue here is recreating the name of a variable by concating strings and assuming it would then magically turn into that variable.. I had a lot to learn. Also, a much better way to pass an ambiguous number of options into a function is to use JSON.

var availableTimes,
    selected_unit,
    selected_unit_number;

function createTimePicker(machineNumber){
    availableTimes = machineNumber({booked:"no"}).select("time");
    for (i=0;i<availableTimes.length;i++){
        $('<option/>').val(availableTimes[i]).html(availableTimes[i]).appendTo('#signin_start_time');
    }
}

$(function() {
    $('body').on('click', '#cybex_arctrainer_button', function() {
        selected_unit = "cybex_arctrainer";
    });

    $('body').on('change', '#signin_unit_number_selector', function () {
        selected_unit_number = $("#signin_unit_number_selector option:selected").text();
        unit_plus_number = selected_unit+selected_unit_number;
        createTimePicker(unit_plus_number);
    });
});

A few things: The database works. If I run createTimePicker(cybex_arctrainer1) it fills in the availableTimes variable just fine. The problem seems to be with combining selected_unit+selected_unit_number and passing them to createTimePicker.

Était-ce utile?

La solution

Here:

machineNumber({booked:"no"})

machineNumber is a string, but you're trying to call it as if it is a function. You'll get the same error if you do something like

someVar = 'bob';
someVar();

You say that if you run

createTimePicker(cybex_arctrainer1);

but your code is not calling createTimePicker with the variable cybex_arctrainer1 as an argument, instead it's doing something more like:

createTimePicker('cybex_arctrainer1');
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top