Скрыть строки HTML на основе ввода пользователя - PullRequest
1 голос
/ 26 сентября 2019

Я создаю таблицу симулированной баскетбольной статистики и хотел бы, чтобы пользователи могли устанавливать минимальные требования к играм.Вот то, что я до сих пор собирал вместе из разных неопределенно похожих вопросов, которые я нашел здесь:

<form> 
<p>Minimum Games Played?</p> 
<input type="number" name="gamesnumber"><br> 
</form>

function view(){
 var x = document.getElementsByClassName("games")
 for(var i = 0; i < x.length; i++){
  if(x[i].value < gamesnumber){
   x[i].closest(".item-row").style.visibility = "visible";
  }else{
   x[i].closest(".item-row").style.visibility = "collapse";
  }
 }
}
</script>

<html>
<head><title>Per Game Stats</title></head>
<body background="" bgcolor=#FFFFFF text="#000000" link=#000000 vlink=#000000>
<tr><td align="center"><hr></td></tr>
<tr><td align="center" width="100%"><div align="center"><b><u>Player Statistics</u></b></div></td></tr>
<tr><td align="center" width="100%"><div align="center"><center><table border="0">
<thead><tr><th width="30" bgcolor=#E85757 align="center"><font size="2" color="#FFFFFF"><b><u>ID</u></b></font></th>
<th width="100" bgcolor=#E85757 align="left"><font size="2" color="#FFFFFF"><u><b>Team</b></u></font></th>
<th width="150" bgcolor=#E85757 align="left"><font size="2" color="#FFFFFF"><u><b>Name</b></u></font></th>
<th width="30" bgcolor=#E85757 align="center"><font size="2" color="#FFFFFF"><u><b>Pos</b></u></font></th>
<th width="30" bgcolor=#E85757 align="center"><font size="2" color="#FFFFFF"><u><b>G</b></u></font></th>
<th width="30" bgcolor=#E85757 align="center"><font size="2" color="#FFFFFF"><u><b>M</b></u></font></th>
<th width="30" bgcolor=#E85757 align="center"><font size="2" color="#FFFFFF"><u><b>P</b></u></font></th>
<th width="30" bgcolor=#E85757 align="center"><font size="2" color="#FFFFFF"><u><b>R</b></u></font></th>
<th width="30" bgcolor=#E85757 align="center"><font size="2" color="#FFFFFF"><u><b>A</b></u></font></th>
<th width="30" bgcolor=#E85757 align="center"><font size="2" color="#FFFFFF"><u><b>S</b></u></font></th>
<th width="30" bgcolor=#E85757 align="center"><font size="2" color="#FFFFFF"><u><b>B</b></u></font></th>
<th width="30" bgcolor=#E85757 align="center"><font size="2" color="#FFFFFF"><u><b>T</b></u></font></th>
<th width="50" bgcolor=#E85757 align="center"><font size="2" color="#FFFFFF"><u><b>FG%</b></u></font></th>
<th width="50" bgcolor=#E85757 align="center"><font size="2" color="#FFFFFF"><u><b>FT%</b></u></font></th>
<th width="50" bgcolor=#E85757 align="center"><font size="2" color="#FFFFFF"><u><b>3P%</b></u></font></th></thead><tbody>
<tr><td width="30" align="center"><font size="2">503</font></td>
<td width="150" align="left"><font size="2"><a href="./rosters/roster6.htm">Washington Bullets</a></font></td>
<td width="150" align="left"><font size="2"><a href="./players/player503.htm">Aaron Holiday</a></font></td>
<td width="30" align="center"><font size="2">PG</font></td>
<td class="games" width="30" align="center"><font size="2">40</font></td>
<td width="30" align="center"><font size="2">12.2</font></td>
<td width="30" align="center"><font size="2">4.2</font></td>
<td width="30" align="center"><font size="2">1.3</font></td>
<td width="30" align="center"><font size="2">2.7</font></td>
<td width="30" align="center"><font size="2">0.4</font></td>
<td width="30" align="center"><font size="2">0.1</font></td>
<td width="30" align="center"><font size="2">1.1</font></td>
<td width="50" align="center"><font size="2">.407</font></td>
<td width="50" align="center"><font size="2">.692</font></td>
<td width="50" align="center"><font size="2">.489</font></td>
<tr><td width="30" align="center"><font size="2">461</font></td>
<td width="150" align="left"><font size="2"><a href="./rosters/roster26.htm">Portland Trailblazers</a></font></td>
<td width="150" align="left"><font size="2"><a href="./players/player461.htm">Ajdin Penava</a></font></td>
<td width="30" align="center"><font size="2">C</font></td>
<td class="games" align="center"><font size="2">82</font></td>
<td width="30" align="center"><font size="2">27.6</font></td>
<td width="30" align="center"><font size="2">6.6</font></td>
<td width="30" align="center"><font size="2">8.0</font></td>
<td width="30" align="center"><font size="2">1.0</font></td>
<td width="30" align="center"><font size="2">0.5</font></td>
<td width="30" align="center"><font size="2">0.8</font></td>
<td width="30" align="center"><font size="2">0.8</font></td>
<td width="50" align="center"><font size="2">.414</font></td>
<td width="50" align="center"><font size="2">.841</font></td>
<td width="50" align="center"><font size="2">.391</font></td>
<tr><td width="30" align="center"><font size="2">203</font></td>
<td width="150" align="left"><font size="2"><a href="./rosters/roster23.htm">Golden State Warriors</a></font></td>
<td width="150" align="left"><font size="2"><a href="./players/player203.htm">Alex Abdul-Wahad</a></font></td>
<td width="30" align="center"><font size="2">SG</font></td>
<td class="games" width="30" align="center"><font size="2">0</font></td>
<td width="30" align="center"><font size="2">0.0</font></td>
<td width="30" align="center"><font size="2">0.0</font></td>
<td width="30" align="center"><font size="2">0.0</font></td>
<td width="30" align="center"><font size="2">0.0</font></td>
<td width="30" align="center"><font size="2">0.0</font></td>
<td width="30" align="center"><font size="2">0.0</font></td>
<td width="30" align="center"><font size="2">0.0</font></td>
<td width="50" align="center"><font size="2">.000</font></td>
<td width="50" align="center"><font size="2">.000</font></td>
<td width="50" align="center"><font size="2">.000</font></td>
</tbody></table></center></div></td></tr>
</body>
</html>

Но ввод значений в форму ничего не дает.Я на правильном пути?Что-то еще?

Заранее спасибо!:)

Ответы [ 2 ]

2 голосов
/ 27 сентября 2019
<input type="number" name="gamesnumber" onchange="view()"><br> 

Включите вызов события onchange во входные данные, поэтому, как только вы введете что-то в текстовое поле, определенная функция (представление) будет вызываться

Кроме того, изменитеВаша функция view () скрывает соответствующую строку, когда условие соответствует.

Измененная функция:

function view(){
 var gamesnumber = document.getElementsByName("gamesnumber")[0].value;
 var x = document.getElementsByClassName("games")
 for(var i = 0; i < x.length; i++){
  if(x[i].innerText < gamesnumber){
   x[i].parentElement.style.visibility = "visible";
  }else{
   x[i].parentElement.style.visibility = "collapse";
  }
 }
} 

Редактировать: Так как это onchange() событие, после ввода вы должны щелкнуть где-нибудь или нажать Tab, чтобы вызвать функцию, если вы хотите набирать текст, вы также можете использовать onblur или onkeyup().

См. Эту дополнительную информацию о таких событиях запуска: https://www.w3schools.com/jsref/event_onkeyup.asp

2 голосов
/ 27 сентября 2019

Ну, во-первых, теги формы и скрипта должны быть внутри тега body.Ваши элементы в классовых играх - это теги td, поэтому у этих тегов нет свойства value, вместо этого у них есть свойство innerText, затем вы нигде не вызываете функцию представления.Измените свой код на это (я пишу только код, который вы должны изменить):

<form> 
<p>Minimum Games Played?</p> 
<input type="number" name="gamesnumber" id="gamesnumber"><br> 
</form>

И этот JavaScript

<script type="text/javascript">
function view(){
var gamesnumber = document.getElementById("gamesnumber").value || 0; //this is valid because is a textinput, we add 0 as default value
 var x = document.getElementsByClassName("games");
 for(var i = 0; i < x.length; i++){
  if(x[i].innerText < gamesnumber){
   x[i].closest(".item-row").style.visibility = "visible";
  }else{
   x[i].closest(".item-row").style.visibility = "collapse";
  }
 }
}
window.addEventListener("load", function(){
    //we add this event listener because your input element tecnically doesn't exist until page is loaded
    var input_games = document.getElementById("gamesnumber");
    input_games.addEventListener("input", view); //we call this function every time input value changes

});
</script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...