Javascript 如何获取该类包含2个名称的getelementbyClassname?

Javascript 如何获取该类包含2个名称的getelementbyClassname?,javascript,getelementsbyclassname,Javascript,Getelementsbyclassname,我有一个有两个名字的类,class=testselectr10,我得到了十行。例如: var res={}; 变种; 对于(var r=1;r好的,我假设代码中有一些不准确的地方: 必须distinct按键选择json中的相应数据,您不能假设json中的数据放置顺序始终与UI中的元素顺序相对应: res = JSON.parse(localStorage.getItem("testingvalue")); // res now should be in form of // res = {

我有一个有两个名字的类,class=testselectr10,我得到了十行。例如:

var res={};
变种;

对于(var r=1;r好的,我假设代码中有一些不准确的地方:

  • 必须distinct
    按键选择
    json
中的相应数据,您不能假设json中的数据放置顺序始终与UI中的元素顺序相对应:

res = JSON.parse(localStorage.getItem("testingvalue"));

// res now should be in form of
// res = {
//   r1: {
//     qtyL: 2,
//     qtyO: 3,
//   },
//   r2: {
//      ...
//   },
//   ...
// };
  • 不应将任何魔法数字硬编码到代码中,尤其是关于json数据结构的代码:

    var thunks = Object.keys(res).filter(function (name) {
      return name.match(/^r(\d+)$/);
    });
    console.log('found stat thunks:', thunks.join(', '));
    
    for (var r = 0; r < thunks.length; r++) {
      var thunk = thunks[r];
      var stats = res[thunk];
      var els = document.querySelectorAll("." + thunk);
      console.log('supplied stats for "' + thunk + '" thunk:', JSON.stringify(stats));
      console.log('found "<select>" elements:', els.length);
      ...
    
    var thunks=Object.keys(res).filter(函数名){
    返回名称。匹配(/^r(\d+)$/);
    });
    log('found stat thunks:',thunks.join(',);
    对于(var r=0;r
  • 您可能不应该假设UI中的元素的命名与持久化数据对象中的键完全相同:

    // some ui-data bridge
    function findSelectsByThunkName(name) {
        if (name.match(/^r\d+$/)) { // stats thunk
            return document.querySelectorAll("." + name);
        } elseif (...) {
           ...
        }
    
       return [];
    }
    
    ...
    
    var thunks = Object.keys(res).filter(function (name) {
      return name.match(/^r(\d+)$/);
    });
    console.log('found stat thunks:', thunks.join(', '));
    
    for (var r = 0; r < thunks.length; r++) {
      var thunk = thunks[r];
      var stats = res[thunk];
      var els = findSelectsByThunkName(thunk);
      ...
    
    //一些ui数据桥
    函数findSelectsByTunkName(名称){
    如果(name.match(/^r\d+$/){//stats thunk
    返回单据.查询选择全部(“.”+名称);
    }埃尔塞夫(…){
    ...
    }
    返回[];
    }
    ...
    var thunks=Object.keys(res).filter(函数名){
    返回名称。匹配(/^r(\d+)$/);
    });
    log('found stat thunks:',thunks.join(',);
    对于(var r=0;r
  • 工作代码段:

    //jQuery具有“$(document).ready(function(){…})”的“快捷方式”;'
    //为了简单起见,只需使用“$(function(){…});”
    $(函数(){
    var-res=null;
    试试{
    //假设“testingvalue”包含类似“{”r1:{”qtyL:2,“qtyO:3,…}”,r2:{…},“something”:[…],“and_other:1212,…}”
    res={
    “r1”:{
    “qtyL”:2,
    “qtyO”:3,
    },
    “r2”:{
    },
    “某物”:[],
    “和其他”:1212,
    }
    //res=JSON.parse(localStorage.getItem(“testingvalue”);
    var thunks=
    //从“res”对象获取所有密钥(将获取类似于[“r1”、“r2”、“something”、“and_other”、…]的内容)
    对象。键(res)
    //然后过滤它们,只得到那些。。。
    .filter(函数(名称){
    返回(
    name.match(
    //开始(^symbol)
    //带有“r”字符
    //然后有任何数字(\d序列),
    //可能不止一个(+符号)
    //然后结束($symbol)
    /^r(\d+)$/
    //这称为“正则表达式”
    //您可以在提供的链接[1]上阅读有关regexp的更多信息
    )
    );
    });
    //thunks变量现在保存与“^r\d+$”模式对应的“res”对象键列表,如[“r1”、“r2”]
    //由于javascript中的“array”变量实际上是对象,因此它们支持一些方便的数组元素操作方法(如前面提到的“.filter()”方法)等
    //“.join()”是“array”对象的一种方法,它连接数组的字符串化元素,并将它们与提供的粘合字符串粘合,因此在本例中,[“r1”、“r2”、“r3”]变为“r1、r2、r3”
    log('found stat thunks:',thunks.join(',);
    //并且“数组”对象具有包含当前数组长度的“.length”属性
    //我们可以使用它来迭代所有实际的元素
    //的数组,而不是硬编码预期的数组长度,这有点不可靠
    对于(var r=0;r