Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/456.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 未捕获引用错误:未定义问题_Javascript_Jquery - Fatal编程技术网

Javascript 未捕获引用错误:未定义问题

Javascript 未捕获引用错误:未定义问题,javascript,jquery,Javascript,Jquery,我得到了未捕获的引用错误:在其他函数中使用全局变量时,问题未定义错误 JavaScript代码: $(function() { var dialog,total_que=0; var questions = { name:{}, type:{}, options:{}} function addQuestion() { var que = new Array(); var option = new Array(); var

我得到了未捕获的引用错误:在其他函数中使用全局变量时,问题未定义错误

JavaScript代码:

$(function() {
    var dialog,total_que=0;
    var questions = { name:{}, type:{}, options:{}}

    function addQuestion() {
        var que = new Array();
        var option = new Array();
        var new_element_label;
        var new_element = "";
        var i=0;
        form_fields = form[0].elements.length;

        if(form_fields<=2){
            que['name'] = form[0].elements[0].value;
            que['type']  = form[0].elements[1].value;
        }
        else
        {
            que['name'] = form[0].elements[0].value;
            que['type']  = form[0].elements[1].value;
            for(i=0;i<(form_fields-3);i++){
                option[i] = form[0].elements[i+3].value;
            }
        }

        switch(que['type']){
        case 'text':
            var new_element = '<input type="text" name="name" placeholder="'+que['name']+'">';
            break;
        default:
            break;
        }
        new_element_label = '<label for="name">'+que['name']+'</label><br>';
        new_element_label += '<div for="text">';
        new_element += '</div>';
        $('#add_polling_form fieldset').append("<br>"+new_element_label+new_element);
        dialog.dialog( "close" );
        form[0].reset();
        questions['name'][total_que] = que['name'];
        questions['type'][total_que] = que['type'];
        questions['options'][total_que] = option;
        total_que++;
        console.log(questions);
    }

    console.log(questions);
    dialog = $("#dialog-form" ).dialog({
        autoOpen: false,
        height: 300,
        width: 350,
        modal: true,
        buttons: {
            "Add Question": addQuestion,
            Cancel: function() {
                $('#que_option_val').html('');
                dialog.dialog( "close" );
                form[0].reset();
            }
        },
        close: function() {
            $('#que_option_val').html('');
            dialog.dialog( "close" );
            form[0].reset();
        }
    });
    form = dialog.find( "form" ).on("submit", function( event ) {
        event.preventDefault();
    });
    $( "#create-user" ).button().on( "click", function() {
        dialog.dialog( "open" );
    });
});

function add_que_option(que_type){
    var que_type = que_type;
    switch(que_type){
    case 'text':
        $('#que_option_val').html('');
        break;
    default:
        $('#que_option_val').html('<input type="button" class="ui-button" value="Add More      Option" onclick="add_option();">')
        $('#que_option_val').append("<input type='text' placeholder='Option for Question'>");
    }
}
function add_option(){
    $('#que_option_val').append("<input type='text' placeholder='Option for Question'>");
}
function save_form(){
    console.log(questions);
}

变量
questions
是顶部
$(…)
调用中匿名函数的局部变量
save_form()
是在该函数之外定义的,因此这些局部变量对它都不可见


您应该在
$(function(){…}内移动
保存表单
或将
问题的声明移动到它的外部。

发布的代码中没有定义任何全局变量。将
问题
变量声明到
jquery
就绪函数外部,或者只需执行
窗口。问题=…
并节省一些时间:)@Derek朕會功夫 这到底有什么帮助呢?这只是分配全局变量的另一种方式。@Teemu-这样可以避免在
$(function(){})
范围内声明新的变量名,因此范围内的任何
问题
引用都会指向全局变量。@Derek朕會功夫 将变量声明移到其外部与此等效。
Uncaught ReferenceError: questions is not defined 
 save_form 
 onclick