JS使用通配符创建数组

ale*_*603 0 javascript arrays wildcard

所以我有一个HTML网格,每个框都使用以下约定进行标记.每个框都有一个标记为row_column的ID.我想创建一个方法来扫描文档并返回一个只包含具有特定列号的框的数组.例如,如果我调用下面的函数,它应该返回一个框数组,如果我用数字2调用它,将返回(1_2,2_2,3_2和4_2).

  function getBoxesByColumn(columnNumber){
        return document.getElementById("?_" + columnNumber);
    }
Run Code Online (Sandbox Code Playgroud)

从那里,我将使用该函数以这种方式在另一个函数中创建一个数组:

function test(){
    var boxes = getBoxesByColumn(1);
    console.log(boxes);
Run Code Online (Sandbox Code Playgroud)

但是,当我调用控制台时,它只打印一个空值.这是为什么?

编辑:

我的HTML示例(包含2行)

        <div id = "game_background">

        <!-- Row 1 --> 

        <div id = "row_1" class = "row">

            <div id = "1_1" class = "box_empty">
                <p class = "v"></p>
            </div>

            <div id = "1_2" class = "box_empty">
                <p class = "v"></p>
            </div>

            <div id = "1_3" class = "box_empty">
                <p class = "v"></p>
            </div>

            <div id = "1_4" class = "box_empty">
                <p class = "v"></p>
            </div> 

        </div>

        <!-- Row 2 --> 
        <div id = "row_2" class = "row">

            <div id = "2_1" class = "box_empty">
                <p class = "v"></p>
            </div>

            <div id = "2_2" class = "box_empty">
                <p class = "v"></p>
            </div>

            <div id = "2_3" class = "box_empty">
                <p class = "v"></p>
            </div>

            <div id = "2_4" class = "box_empty">
                <p class = "v"></p>
            </div>
        </div>
Run Code Online (Sandbox Code Playgroud)

亚历克斯

gue*_*314 5

你可以使用.querySelectorAll(),属性以选择器,后代选择器开头,属性以选择器>结束

function getBoxesByColumn(columnNumber) {
  return document.querySelectorAll("div[id^=row] > div[id$='" + columnNumber + "']");
}

console.log(getBoxesByColumn(2))
Run Code Online (Sandbox Code Playgroud)
<div id="game_background">

  <!-- Row 1 -->

  <div id="row_1" class="row">

    <div id="1_1" class="box_empty">
      <p class="v"></p>
    </div>

    <div id="1_2" class="box_empty">
      <p class="v"></p>
    </div>

    <div id="1_3" class="box_empty">
      <p class="v"></p>
    </div>

    <div id="1_4" class="box_empty">
      <p class="v"></p>
    </div>

  </div>

  <!-- Row 2 -->
  <div id="row_2" class="row">

    <div id="2_1" class="box_empty">
      <p class="v"></p>
    </div>

    <div id="2_2" class="box_empty">
      <p class="v"></p>
    </div>

    <div id="2_3" class="box_empty">
      <p class="v"></p>
    </div>

    <div id="2_4" class="box_empty">
      <p class="v"></p>
    </div>
  </div>
Run Code Online (Sandbox Code Playgroud)