如何获取元素名称属性中的数字?

时间:2016-01-04 16:17:51

标签: javascript

我需要从属性name="data[0][post_title]"获取数字值并将其放入变量

我该怎么做呢?

我是这样开始的,但不知道如何获得数据的价值

var ele = document.getElementsByTagName('name');

这是整个html标签

<input class="post_title" id="title_0" placeholder="Enter Post Title" name="data[0][post_title]" value="text" type="text">

2 个答案:

答案 0 :(得分:1)

好吧,我想我理解你的问题

您正在尝试访问属性并提取数字。在这种情况下,您将执行以下操作。

document.getElementsByClassName("post_title")[0].getAttribute("name")
.match(/\d+/);

您的input元素的类名称为post_title。要访问此元素,您需要使用getElementsByClassName。这将返回一个集合,因此要访问特定元素,您需要将元素的索引放在该类名称中。在你的情况下,那是零。

要访问属性,我们使用getAttribute方法。在您的情况下,您想要访问name属性。

要查找数字,我们需要搜索正则表达式。我们可以使用match函数执行此操作。正则表达式/\d+/找到任意数字。

在这里试试这个例子

var number = document.getElementById("number");

var index = document.getElementsByClassName("post_title")[0].getAttribute("name")
    .match(/\d+/);

number.innerHTML = index;
<input class="post_title" id="title_0" placeholder="Enter Post Title" name="data[0][post_title]" value="text" type="text">

<p id="number"></p>

答案 1 :(得分:1)

如果要使用input属性迭代name个元素,请使用选择器input[name]

为了检索属性值的方括号中的数字,您可以匹配表达式/\[(\d+)\]/。例如,name="data[0][post_title]"将返回0

请参阅this example

var elements = document.querySelectorAll('input[name].post_title');

Array.prototype.forEach.call(elements, function (el) {
    var match = el.name.match(/\[(\d+)\]/),
        number = match !== null ? match[1] : null;

    console.log(number);
});