【问题标题】:Getting a value by name in javascript/razor application在 javascript/razor 应用程序中按名称获取值
【发布时间】:2013-10-07 19:45:35
【问题描述】:

我有一个 asp 应用程序,我必须在其中使用 javascript 来获取元素的值

@for(int i=0; i< Model.Count; i++) {
    <input type="text" value="@Model[i].age" name="age@(i)" />
    HtmlActionLink("new age","Change", new { age = "age" + i.ToString()
});
                                     }

我需要获取每个标签 age 的值:new { age = "age" + i.ToString() 不起作用,我必须使用 document.getElementsByName 方法将其替换为脚本 javascript

如何修改我的代码来完成这项任务?

【问题讨论】:

    标签: c# javascript .net asp.net-mvc razor


    【解决方案1】:

    我会简单地为每个输入元素添加一个类,赋予它一些意义(例如'input-age'):

    <input class="input-age" type="text" value="@Model[i].age" name="age@(i)" />
    

    然后您可以按类名选择所有输入,而无需依赖视图引擎中动态分配的名称:

    var ages = document.querySelectorAll('input.input-age');
    

    或者如果您需要查找特定年龄索引的值,而无需添加类名:

    var ageIndex = 4;
    var age = document.querySelector('input[name="age' + ageIndex + '"]').value;
    

    仅供参考,对于 IE,由于querySelectorAll 功能,它只能在版本 8 或更高版本中工作,但您可以使用其他方法。

    如果 jQuery 在桌面上,您无法更改任何内容并使用“开始于”选择器来获取所有“年龄”元素:

    var ages = $('input[name^="age"]');
    

    或者,添加类名后:

    var ages = $('.input-age');
    

    或者,寻找特定输入的值:

    var ageIndex = 4;
    var age = $('input[name="age' + ageIndex + '"]').val();
    

    使用最后一个例子,你不需要添加类名;

    【讨论】:

    • 但我只需要年龄的当前值而不是所有年龄表
    • @Lamloumi:你如何定义“年龄的当前值”?您的页面上显然有零对多的年龄输入。
    • 我的意思是标签的值有name="age@(i)"
    猜你喜欢
    • 1970-01-01
    • 2017-02-03
    • 2018-01-06
    • 2012-08-31
    • 1970-01-01
    • 2014-01-19
    • 1970-01-01
    • 1970-01-01
    • 2015-05-04
    相关资源
    最近更新 更多