Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/372.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/75.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,我正在创建一个时间表生成网站,作为我项目的一部分,我被困在一个点上 使用for循环,我为科目和系生成用户选择的文本框。现在的问题是,我无法获取这些动态生成的文本框的值。我想获取这些值并将其存储到数组中,以便以后可以将其存储到数据库中 如果我使用的是localstorage,那么它有时会显示NaN或undefined。请帮帮我 下面是我的Jquery代码 $.fn.CreateDynamicTextBoxes = function() { $('#Dynam

我正在创建一个时间表生成网站,作为我项目的一部分,我被困在一个点上

使用for循环,我为科目和系生成用户选择的文本框。现在的问题是,我无法获取这些动态生成的文本框的值。我想获取这些值并将其存储到数组中,以便以后可以将其存储到数据库中

如果我使用的是localstorage,那么它有时会显示NaN或undefined。请帮帮我

下面是我的Jquery代码

$.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实际上,使变量成为全局变量的想法是,我想在我的函数之外访问它,所以我声明了它们