Javascript 将动态生成的文本框中的值存储到数组中
我正在创建一个时间表生成网站,作为我项目的一部分,我被困在一个点上 使用for循环,我为科目和系生成用户选择的文本框。现在的问题是,我无法获取这些动态生成的文本框的值。我想获取这些值并将其存储到数组中,以便以后可以将其存储到数据库中 如果我使用的是localstorage,那么它有时会显示NaN或undefined。请帮帮我 下面是我的Jquery代码Javascript 将动态生成的文本框中的值存储到数组中,javascript,jquery,Javascript,Jquery,我正在创建一个时间表生成网站,作为我项目的一部分,我被困在一个点上 使用for循环,我为科目和系生成用户选择的文本框。现在的问题是,我无法获取这些动态生成的文本框的值。我想获取这些值并将其存储到数组中,以便以后可以将其存储到数据库中 如果我使用的是localstorage,那么它有时会显示NaN或undefined。请帮帮我 下面是我的Jquery代码 $.fn.CreateDynamicTextBoxes = function() { $('#Dynam
$.fn.CreateDynamicTextBoxes = function()
{
$('#DynamicTextBoxContainer, #DynamicTextBoxContainer2').css('display','block');
InputtedValue = $('#SemesterSubjectsSelection').val();
SubjectsNames = [];
for (i = 0; i < InputtedValue; i++)
{
TextBoxContainer1 = $('#DynamicTextBoxContainer');
TextBoxContainer2 = $('#DynamicTextBoxContainer2');
$('<input type="text" class="InputBoxes" id="SubjectTextBoxes'+i+'" placeholder="Subject '+i+' Name" style="margin:5px;" value=""><br>').appendTo(TextBoxContainer1);
$('<input type="text" class="InputBoxes" id="FacultyTextBoxes'+i+'" placeholder="Subject '+i+' Faculty Name" style="margin:5px;" value=""><br>').appendTo(TextBoxContainer2);
SubjectsNames['SubjectTextBoxes'+i];
}
$('#DynamicTextBoxContainer, #UnusedContainer, #DynamicTextBoxContainer2').css('border-top','1px solid #DDD');
}
$.fn.CreateTimeTable = function()
{
for (x = 0; x < i; x++)
{
localStorage.setItem("Main"+x, +SubjectsNames[i]);
}
}
$.fn.createdynamictextboxs=函数()
{
$('DynamicTextBoxContainer,'DynamicTextBoxContainer2').css('display','block');
InputedValue=$('SemesterSubjectsSelection').val();
主题名称=[];
对于(i=0;i”).appendTo(TextBoxContainer1);
$(“
”).appendTo(TextBoxContainer2);
主题名称['subjecttextboxs'+i];
}
$(“#DynamicTextBoxContainer,#UnusedContainer,#DynamicTextBoxContainer2').css('border-top','1px solid#DDD');
}
$.fn.createTimeline=函数()
{
对于(x=0;x
为了更好的理解,我也发布了截图
我知道您为每个科目创建了两个文本框,一个用于科目,另一个用于教员。您希望它作为jQuery插件 首先,我认为你应该创建一个插件而不是两个,并从插件中公开你需要的东西 你应该避免使用全局变量,现在你有
inputedvalue
,i
,SubjectsNames
等声明为全局变量,我相信你不应该这样做,而是把这些变量放在你的插件中,只公开你真正需要的
您声明了您的SubjectNames
,但稍后在第一个for
循环中,您尝试访问它的属性,实际上对此不做任何操作。在第二个for循环中,您尝试以数组的形式访问它,但它是空的,因为您没有在其中分配任何值
看看我创建的代码片段。我不太喜欢jQuery,尤其是自定义插件,因此代码并不完美,可以进行优化,但我相信它说明了这一点。我将一些选择器作为配置对象传递,以使其更易于重用。我增加了两个按钮,使它更“可玩”,但你可以改变它,因为你喜欢。Prepare按钮创建您的动态文本框,button Generate获取它们的值并在result div中“打印”它们。Generate
方法从插件中公开,以获取插件外部的值,因此您可以随意使用它们(例如,将它们存储在本地存储器中)
$(函数(){
$.fn.timeTables=函数(配置){
//根据config object中提供的选择器,使用jQuery对象准备变量
var numberOfSubjectsTextBox=$(config.numberOfSubjects);
var subjectsDiv=$(config.subjects);
var facultiesDiv=$(config.faculties);
var prepareButton=$(config.prepareButton);
变量numberOfSubjects=0;
准备按钮。单击(函数(){
//从文本框中读取主题数-此处应添加一些验证
numberOfSubjects=+numberOfSubjectsTextBox.val();
//从任何文本框中清除科目和教员div
subjectsDiv.empty();
facultiesDiv.empty();
//为每个主题创建新的文本框,并将它们附加到适当的div中
//TODO:这些输入可以存储在数组中,以后使用
对于(var i=0;i
#内容分区{
浮动:左;
}
#内容分区输入{
显示:块;
}
#页脚{
明确:两者皆有;
}
准备
生成
代码中有很多地方可以改进。无论如何,代码中似乎有一个不需要的“+”字符:localStorage.setItem(“Main”+x,+SubjectsNames[i]);可能应该是localStorage.setItem(“Main”+x,SubjectsNames[i])@elad.chen先生我做了,它的说法没有定义。我感觉到数组结构中存在问题。这就是问题所在吗?+1000给出了如此简单和完美的答案…谢谢你,先生@tdragon实际上,使变量成为全局变量的想法是,我想在我的函数之外访问它,所以我声明了它们