【问题标题】:Iterating through all the instances with name having a common string [closed]遍历名称具有公共字符串的所有实例[关闭]
【发布时间】:2014-03-03 20:53:22
【问题描述】:

有没有办法访问所有以公共字符串开头的对象实例。

示例:我有名为 button64、button223、button856471、button229846 等的实例。我无法控制这些实例的命名方式。我想将所有这些推入一个数组中。

我没有创建这些对象,我只需要编写一个位于此 HTML 页面中的 javascript 并收集以字符串“按钮”开头的所有对象实例。

目的是从这些对象中找到想要的对象并更改视觉元素。

此外,该解决方案必须与 IE8 兼容。关于我应该如何迭代的任何想法?

【问题讨论】:

  • 我知道你可以用 jquery 选择器来做到这一点......就像'$(“[name^=button]”)'......我不知道有什么办法它没有 jquery 或类似的东西......
  • stackoverflow.com/questions/9795773/… 看看@wingsofovnia 的回答。
  • 我不知道确切的变量名称。我知道它们以字符串“按钮”开头。 javascript有解决方案吗?

标签: javascript loops wildcard


【解决方案1】:

如果你会使用 jQuery,你可以这样写:

var buttonsArray = [];

$("div").each(function() {
    var id = $(this).attr("id");

    if (id && id.indexOf("button") == 0) {
        buttonsArray.push($(this));
    }
});

【讨论】:

  • 使用id.indexOf("button") == 0 可能更有意义,因为它应该始终出现在名称的开头。
  • 如果您已经包含 jquery,那么您可以使用选择器...jQuery Doc: attribute starts with
【解决方案2】:

您可以使用正则表达式来查找与该模式匹配的任何表达式。使用 match 方法,模式的每个实例都作为数组返回。

var str = document.getElementById("sample");
var arr = string.match(/button[\d]*/g);

第二行的正则表达式将匹配任何带有“按钮”的结果,一旦遇到非数字字符就会停止。

【讨论】:

  • 我正在寻找变量,而不是字符串中的文本。如何实现变量名的解决方案?
猜你喜欢
  • 2018-08-22
  • 2015-10-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-31
  • 2011-11-13
  • 1970-01-01
  • 2014-10-29
相关资源
最近更新 更多