0

更新:このコードはばかげています。ここでの問題の根本は、文字列を連結して変数の名前を再作成し、それが魔法のようにその変数に変わると仮定することです.私には学ぶことがたくさんありました. また、あいまいな数のオプションを関数に渡すためのはるかに優れた方法は、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);
    });
});

いくつかのこと: データベースは動作します。実行createTimePicker(cybex_arctrainer1)すると、availableTimes変数に問題なく入力されます。問題は、それらを組み合わせselected_unit+selected_unit_numberて に渡すことにあるようcreateTimePickerです。

4

1 に答える 1

1

ここ:

machineNumber({booked:"no"})

machineNumberは文字列ですが、関数であるかのように呼び出そうとしています。次のようなことをすると、同じエラーが発生します

someVar = 'bob';
someVar();

あなたが実行する場合、あなたは言う

createTimePicker(cybex_arctrainer1);

しかし、あなたのコードは変数createTimePickerを引数として呼び出していません。代わりに、次のようなことをしています: cybex_arctrainer1

createTimePicker('cybex_arctrainer1');
于 2013-07-29T20:26:18.400 に答える