为什么javascript会识别我的控件现在正在持有一个数组?

时间:2017-06-05 00:29:12

标签: javascript jquery arrays asp.net-mvc model-view-controller

我正在处理小型MVC应用程序,即#34;发送电子邮件",并且在开始时我使用下拉列表仅选择1个接收器,但之后我添加了多个类我的dropdownList,当我选择2-3个接收器时,当我尝试调试这个代码时,我只用了一个接收器:

$("#SubmitEmail").click(function () {
    var Receiver = $('#ReceiverID').val();
    var Subject = $('#subject').val();
    var Body = $('#content').val();
    var obj = { 'Receiver': Receiver, 'Subject': Subject, 'Body': Body };

    SendEmail(obj);
});

我意识到我曾经存储过receiverId的var Receiver成为一个阵列,并且我想知道为什么javascript会改编成soo cooooool所以它认识到我在那里选择了几个项目,它变成了一个数组,所以我简单地循环它(修改我的代码):

$("#SubmitEmail").click(function () {
    var Receivers = $('#ReceiverID').val();
    for (var i = 0; i < Receivers.length; i++) {
        var Receiver = Receivers[i];
        var Subject = $('#subject').val();
        var Body = $('#content').val();
        var obj = { 'Receiver': Receiver, 'Subject': Subject, 'Body': Body };
    }
    SendEmail(obj);
});

一切都很酷,所以我只是想知道js怎么知道这一切?

3 个答案:

答案 0 :(得分:1)

来自jQuery docs on val()

  

当集合中的第一个元素是选择倍数(即a   使用多个属性集选择元素,.val()返回一个   数组包含每个所选选项的值。

所以它实际上是jQuery魔术,而不是JavaScript魔术。

您可以查看val() here的实际源代码。它是一个调用select元素的get hook的函数,它实际上对选定的选项进行循环。

答案 1 :(得分:0)

Javascript很酷,因为你说,但在这个例子中,它实际上是一个Jquery实现灵活性,它返回下拉列表的对象数组。有关详细信息,请参阅http://api.jquery.com/val/

答案 2 :(得分:0)

这就是jQuery的工作原理。请参见.val()函数:

http://api.jquery.com/val/

向下滚动以查看此示例:

从单个选择中获取单个值,从多个选择中获取值数组并显示其值。