selectToUISlider错误selectOptions [optIndex]未定义

时间:2012-03-05 21:48:37

标签: javascript jquery jquery-ui slider

所以我有这个功能:

function load_question_div(render_to, question_info){

//alert(question_info);

var answertype = question_info['question']['answer_type'];
//var allow_graph = question_info['show_graph'];
var responseoptionset = question_info['response_option_set'];
var range = question_info['range'];
var labels = question_info['labels'];
var choices = question_info['choices'];

var questiondiv = $("#samplequestiondiv").clone();
$(questiondiv).attr("id", "question-div");
var questionform = $(questiondiv).children('form')[0];
$(questionform).attr('id', "question_form");
var questiontitle = $(questiondiv).children('p')[0];
$(questiontitle).text(question_info['question']['title']);

if(answertype == "slider"){
    var sliderdiv = document.createElement('div');
    $(sliderdiv).attr('id', "slider");
    $(sliderdiv).attr('style', "padding-top:1.5em;padding-right: 1em;padding-left:.5em;overflow: visible;");
    $(questionform).append(sliderdiv);
    for(var i=0; i<responseoptionset.length; i++){
        alert(responseoptionset[i]['id']);
        var qinput = document.createElement('div');
        $(qinput).addClass("question_input");
        $(qinput).attr("style", "text-align:center; margin-bottom:40px;padding-left:10px;");
        var inputlabel = document.createElement('label');
        $(inputlabel).text(responseoptionset[i]['text']);
        var inputselect = document.createElement('select');
        $(inputselect).attr('name', 'r'+responseoptionset[i]['id']);
        $(inputselect).attr('id', 'slider'+responseoptionset[i]['id']);
        for (var v=0; v< range.length; v++){
            var inputoption = document.createElement('option');
            $(inputoption).addClass("question_input");
            $(inputoption).attr('value', range[v]);
            $(inputselect).append(inputoption);
        }
        $(qinput).append(inputlabel);
        $(qinput).append(inputselect);
        $(questionform).append(qinput);
        alert("ok");
        $('#slider'+responseoptionset[i]['id']).selectToUISlider({tooltip: false, labels: labels}).hide();
        alert("done");
    }

此函数应该创建一个select,create选项,然后创建一个selectToUISlider。当我注释掉“转换”语句(在最后一个警报之前)时,一切都按预期显示。当我把它留下来时,追加不起作用。

此外,当我把它留在里面时,没有任何东西出现,萤火虫给了我错误:

selectOptions [optIndex]未定义 [打破此错误]

(75超出范围10)

我不确定75和10来自哪里,但无论我的滑块范围如何,它总是75和10。

我的所有变量都是正确的并且符合预期。 我以前几乎以同样的方式完成了这个,除了我使用django模板标签来创建元素,而不是jquery(并且它有效)。

我正在使用jQuery 1.6.2和jQueryUI 1.8.16(就像我工作时一样)

任何人都可以看到问题吗?或者之前有人遇到过这个问题吗?

编辑: 没有函数调用(这是我可以让select完全显示的唯一方法),select的生成源代码如下:

<div style=
"padding-top: 1.5em; padding-right: 1em; padding-left: 0.5em; overflow: visible;" id=
"slider"></div>

<div style="text-align: center; margin-bottom: 40px; padding-left: 10px;" class=
"question_input">
    <label>--</label>
    <select id="slider759" name="r759">
        <option text="1" value="1" class="question_input">
            1
        </option>

        <option text="2" value="2" class="question_input">
            2
        </option>

        <option text="3" value="3" class="question_input">
            3
        </option>

        <option text="4" value="4" class="question_input">
            4
        </option>

        <option text="5" value="5" class="question_input">
            5
        </option>
    </select>
</div>

1 个答案:

答案 0 :(得分:0)

由于某些原因,如果我使用var名称而不是id选择它。