未捕获引用错误:未定义问题
Uncaught ReferenceError: questions is not defined
我得到了Uncaught ReferenceError:在其他函数中使用全局变量时,问题未定义错误。
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);
}
当我调用addQuestion()函数时,值被插入到选项数组中。但当我调用save_form()时,它会在控制台中给我这样的错误。
Uncaught ReferenceError: questions is not defined
save_form
onclick
变量questions
是位于顶部$(...)
调用内部的匿名函数的本地变量。save_form()
是在该函数之外定义的,因此这些局部变量对它来说都不可见
您应该将save_form
移到$(function() { ... }
内部,或者将questions
的声明移到它外部。
相关文章:
- 如何消除代码中的未定义和其他问题
- 组件生命周期问题/无法处理未定义的问题
- JavaScript/jQuery JSON数组问题-值为未定义
- 使用Breeze脱机数据时出现未定义的问题不是函数
- 如何使用警报进行调试来解决(未定义的)时间问题
- SJCL的问题“;无法读取属性'替换'“未定义”;
- JSON JavaScript 未定义的变量问题
- 创建可在任何地方使用的 JS 函数?范围和功能“未定义”的问题
- 将 AJAX 传递给 PHP 时遇到问题,而是未定义
- 尝试添加到根父节点时出现 KendoUI 未定义节点问题
- 榆树早午餐编译问题:“拆分”未定义
- JavaScript,jquery中未定义的VAR的问题.如何
- JS Revearing Pattern事件未定义问题
- 未捕获引用错误:未定义问题
- Javascript未定义问题
- IE8中控制台未定义问题
- JavaScript全局变量未定义问题
- 对象未定义问题
- 使用Google' Javascript API的未定义问题
- JS对象未定义问题