// this sets the inventory figures
function ricercaInCol(tableId,colonna,value){
const table = document.getElementById('table');
const n_colonne = table.getElementsByTagName('th').length;
document.write(n_colonne);
const celle = table.getElementsByTagName('td');
let contatore = 0;
let occurrMatch = 0;
for(let j=colonna; j<celle.length; j=(j+n_colonne)){
if(celle[j].innerText.match(value)){
occurrMatch++;
contatore++;
}
}
return occurrMatch;
};
ricercaInCol(table,3,'G7');
body {
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
background-color: beige;
}
button {
margin-left: 10px;
}
h1 {
text-align: center;
}
h2 {
text-align: center;
}
a {
text-decoration: none;
}
a:hover {
color: brown;
}
table {
border-collapse: collapse;
}
td {
border: 1px solid black;
text-align: center;
}
th {
background-color: #4CAF50;
border: 1px solid white;
text-align: center;
color: white;
padding: 10px;
}
tr:nth-child(odd) {
background-color: rgb(198, 244, 209);
color:black;
}
.trAlternate {
background-color: rgb(108, 117, 202);
color:black;
}
tr:hover {background-color: #f5f5f5;}
<!DOCTYPE html>
<html lang="en">
<head>
<title>Hardware Inventory</title>
<meta charset="utf-8">
<link rel="stylesheet" href="css/style.css">
</head>
<body>
<h1>INVENTORY TEST</h1>
<h2></h2>
<table id="table" class="sortable"></table>
<script src="js/d3.min.js"></script>
<script src="js/d3run.js" charset="utf-8"></script>
<script src="js/sorttable.js" charset="utf-8"></script>
<script src="js/inventory.js" charset="utf-8"></script>
</body>
</html>
У меня есть функция, которая должна получить длину HTML-коллекции. Однако, когда я бегу:
const n_colonne = document.getElementsByTagName('th').length;
возвращаемое значение равно 0. В то время как я иду с:
const n_colonne = document.getElementsByTagName('th');
Я получаю полную коллекцию. Сценарий размещается в конце тела непосредственно перед тегом конца тела. Таблица (динамически генерируемая D3.js из CSV-файла) помещается задолго до сценария. Я знаю, что эти симптомы типичны для сценариев, которые загружаются до того, как DOM завершит рендеринг элементов. Но это не так. Я не понимаю, как это может произойти.
function ricercaInCol(tableId,colonna,value){
const table = document.getElementById('tableId');
const n_colonne = table.getElementsByTagName('th').length;
const celle = table.getElementsByTagName('td');
let contatore = 0;
let occurrMatch = 0;
for(let j=colonna; j<celle.length; j=(j+n_colonne)){
if(celle[j].innerText.match(value)){
occurrMatch++;
contatore++;
}
}
return occurrMatch;
};