Javascript 获取id';它包含一个字符串

Javascript 获取id';它包含一个字符串,javascript,Javascript,我正在尝试获取包含给定字符串的所有id。完整id未知,只有部分id。id如下所示: <td class="item" id=shipping-1 align="left">$1.00</td> <td class="item" id=shipping-2 align="left">$6.49</td> <td class="item" id=shipping-3 align="left">$8.50</td> // etc.

我正在尝试获取包含给定字符串的所有id。完整id未知,只有部分id。id如下所示:

<td class="item" id=shipping-1 align="left">$1.00</td>
<td class="item" id=shipping-2 align="left">$6.49</td>
<td class="item" id=shipping-3 align="left">$8.50</td>
// etc...
$1.00
$6.49
$8.50
//等等。。。
如您所见,“shipping-”是一个常量,但附加的数字在页面加载时是动态的(取决于对接收地址有效的装运选项)

我对javascript不是很在行,但显然在这里使用
getElementById()
是行不通的

我想避免做一些笨拙的事情,比如在循环中获取id,直到得到“未定义”

我需要这样的东西:
getElementsContainingString('shipping-')


我需要获得这些id的数组,然后读取innerHTML并确定哪个最便宜。这必须通过javascript动态完成,因为我们无法控制服务器端的页面来执行此逻辑。

如果使用JQuery,可以使用以下代码:

var cells = $("td[id^=item]");
括号
[]
告诉我们获取属性id以字符串“item”开头的所有td


。这为
id=“shipping-[wildcard]”
提供了一个CSS选择器。这适用于IE 8+,如果您想支持lower,可以使用polyfills。

尝试查看以下答案:

然后,您将希望使用他们的第二小提琴示例:

他们使用了以下代码(不是我自己的):

document.findElementsWithIdLike=函数(前缀){
var结果=[];
findChildrenWithIdLike(document.body、前缀、结果);
返回结果;
};
window.findChildrenWithIdLike=函数(节点、前缀、结果){
if(node&&node.id&&node.id.indexOf(前缀)==0){
//找到匹配项
结果:推送(节点);
}
//检查子节点
对于(var i=0;i
这很简单:

var tds = document.getElementsByTagName("td");
for (var i=0; i<tds.length; i++) {
  if (tds[i].id.indexOf("shipping") == 0)
    // Do stuff...
}
var-tds=document.getElementsByTagName(“td”);

对于(var i=0;i您始终可以使用css选择器
[attrName^=“startsWith”]

似乎可以从
IE7+
和其他浏览器中获得


这里的示例:

我建议您使用
数据
属性,而不是
id
的可能重复项。它们是否都将具有相同的
(如您的示例中所示)?您可以使用
文档获取它们。GetElementsByCassName
并从中收集
id
是的,它们都有相同的类。只有id和内部HTML不同。这可能值得一试。您是否尝试过循环和
文档。querySelectorAll
?这对所有(或大多数)都有效浏览器?我们仍然有ie7和偶尔的ie6 shopper.mate,它们只适用于IE8+我确信..但是ie6哇,它们卖什么?面向99岁以上的人的东西!:O@jycr753哈哈,你会惊讶于谁在购物(或者我应该说是试图购物)最近在线。
@SnakeDoc哇,我只是在标题上加了一条红线,以获得一个真正的浏览器…只是为了好玩…
,不支持下面的内容…lolI确定不是td[id^=item],而是td[id^=shipping]
document.findElementsWithIdLike = function(prefix) {
    var results = [];
    findChildrenWithIdLike(document.body, prefix, results);

    return results;
};

window.findChildrenWithIdLike = function(node, prefix, results) {
    if (node && node.id && node.id.indexOf(prefix) == 0) {
        //match found
        results.push(node);
    }

    //check child nodes
    for (var i = 0; i < node.childNodes.length; i++) {
        var child = node.childNodes[i];
        var childResult = findChildrenWithIdLike(child, prefix, results);
        if (childResult) {
            results.push(childResult);
        }
    }
};
var tds = document.getElementsByTagName("td");
for (var i=0; i<tds.length; i++) {
  if (tds[i].id.indexOf("shipping") == 0)
    // Do stuff...
}
var cells = document.querySelectorAll('td[id^="shipping-"]');