首页 > 解决方案 > 如何检查单元格是否在 Javascript 循环中具有选择元素?

问题描述

我有一个通过 JSaddRow函数生成的动态创建的表。我想遍历这个表并检查单元格中是否有选择元素。如果是这样,那么我想将所选选项的值推送到名为ingredient_dict.

这是我到目前为止所拥有的:

var table = document.getElementById('selected_ingredients');
var rowCount = table.rows.length;
//table width by counting headers minus the last cell which has a delete button
var cellsCount = table.rows[0].cells.length -1 ; 

//loop through all rows (r) in table
for (var r = 1; r < rowCount; r++) { 
    //initiate dictionary for this ingredient
    var ingredient_dict = {};

    //loop through each cell (c) in row
    for (var c = 0; c < cellsCount; c++) { 
        var $cell = table.rows[r].cells[c];

         if (**CHECK IF CELL HAS A SELECT ELEMENT**) {
             $ingredient_dict["UOM"] = $cell.options[$cell.selectedIndex].value

         } else if (**CHECK IF CELL HAS INPUT ELEMENT**) {
             $ingredient_dict["qty"] = $cell.value
         } else {
             $ingredient_dict["name"] = $cell.value
         }
    }
}

我不确定这是否重要,但这是我的addRow函数中动态创建选择元素的代码:

// ingredient unit of measurement drop down
var cell3= row.insertCell(2);
var unit_of_measure = document.createElement("select");
unit_of_measure.name = "unit_of_measure_select";
cell3.appendChild(unit_of_measure);

我对 javascript 很陌生,所以如果我的代码混乱或者这是一个明显的问题,我深表歉意!

标签: javascript

解决方案


var doesCellHaveElement = (cell,element) => {
  return cell.innerHTML.toLowercase().indexOf(`<${element}`) >= 0;
}; 

元素将是一些小写的标签名称。例如:

doesCellHaveElement(cell, "select");
doesCellHaveElement(cell, "input");

推荐阅读