首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >计数和定义具有特定ID前缀的输入数

计数和定义具有特定ID前缀的输入数
EN

Stack Overflow用户
提问于 2020-02-22 10:15:03
回答 4查看 657关注 0票数 4

我有一张有33个输入的桌子,ID在1-33之间。例如,从“价格-1”一直到“价格-33”。

而不是像这样一个接一个地定义这些元素:

代码语言:javascript
复制
var p1 = document.getElementById("price-1");
var p2 = document.getElementById("price-2");

我如何自动计数(也许是用price-前缀计数?)并使用JavaScript (如果更容易定义jQuery )来定义这些元素中的每一个?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2020-02-22 10:18:40

您可以尝试使用属性选择器 (以:-[attr^=value]开头):

表示属性名称为attr的元素,其值以值作为前缀(前面)。

演示:使用香草JS的

代码语言:javascript
复制
var elList = document.querySelectorAll('[id^=price-]');
console.log(elList.length); //5

//loop throgh all the elements whose id starts with price-
var data = {};
elList.forEach(function(el){
  data[el.id] = el.value;
});
console.log(data);
代码语言:javascript
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input id="price-1" value="100"/>
<input id="price-2" value="200"/>
<input id="price-3" value="300"/>
<input id="price-4" value="400"/>
<input id="price-5" value="500"/>

OR:使用jQuery的

代码语言:javascript
复制
var count = $('[id^=price-]').length;
console.log(count); //5

//loop throgh all the elements whose id starts with price-
var data = {};
$('[id^=price-]').each(function(){
  data[this.id] = this.value;
});
console.log(data);
代码语言:javascript
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input id="price-1" value="100"/>
<input id="price-2" value="200"/>
<input id="price-3" value="300"/>
<input id="price-4" value="400"/>
<input id="price-5" value="500"/>

票数 8
EN

Stack Overflow用户

发布于 2020-02-22 10:22:52

为此,您可以使用querySelectorAll

代码语言:javascript
复制
// Get all elements where id starts with `price` text
const prices = document.querySelectorAll('*[id^="price"]');

// Loop through each one of them
[...prices].forEach(price => {
  console.log('id: ', price.id);
  console.log('value: ', price.value);
});
代码语言:javascript
复制
<input type="text" id="price-1" value="10" />
<input type="text" id="price-2" value="20"/>

票数 3
EN

Stack Overflow用户

发布于 2020-02-22 10:29:01

试试这个:

代码语言:javascript
复制
document.querySelectorAll('[id^="price-"]').forEach((el, i) => console.log(el, i))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60351100

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档