Есть ли способ сделать случайное число в многорядной? - PullRequest
0 голосов
/ 30 апреля 2020

Я пытаюсь сделать 4 строки со случайным изменением числа каждую 1 секунду, а из пяти строк сделать это с номером палки (без изменения каждую 1 секунду), и если я нажму на него, изменения в 4 строки будут остановился.

я делаю код только для 5 строк, как это
5 4 6 3 1

, и он будет занимать больше строк, если я хочу поставить его как это
5 4 6 3 1
1 6 1 3 6
3 2 4 6 8
4 2 1 7 8

Как я могу сделать это с помощью лучшего метода и минимизировать мой код

Это мой код

<html>

<table >
    <tbody>
        <tr id = 'tt2' style="font-size: 22px;">

        </tr>
    </tbody>
  </table>


  <script>





      var onerow2 = null;
    var onenumber2 = null;
    var numbersrandom2 = null;
    var count2 = 0;
    var done = false;
      function random2(){
        if (done == false){
            one = isit(onerow2,'one')     
            two = isit(onerow2,'two')  
            three = isit(onerow2,'three')  
            four = isit(onerow2,'four')  
            five = isit(onerow2,'five')         
             if (onerow2 == null){
                numbers = [one,two,three,four,five];
              numbersrandom2 = numbers[Math.floor(Math.random() * numbers.length)];
            isit2(numbersrandom2,one,'one')
            isit2(numbersrandom2,two,'two')
            isit2(numbersrandom2,three,'three')
            isit2(numbersrandom2,four,'four')
            isit2(numbersrandom2,five,'five')
        }
        var row = "<td onclick='selectroad(this);'  id='one'>" + one + "</td><td onclick='selectroad(this) ' id='two'>" + two + "</td><td onclick='selectroad(this) ' id='three'>" + three + "</td><td onclick='selectroad(this) ' id='four'>" + four + "</td><td onclick='selectroad(this) ' id='five'>" + five + "</td>"
        document.getElementById("tt2").innerHTML = row;         
        count2 = count2 + 1
        if (count2 == 15){
             onerow2 = null;
     onenumber2 = null;
     numbersrandom2 = null;
     count2 = 0
        }
        return numbersrandom2;
        }
      }


        function isit(i,t){
            if (i != t){
        return Math.floor((Math.random() * 9) + 1) 
        }else{
        return onenumber2
        }
        }
        function isit2(i,t,b){
            if (i == t){
            onerow2 = b;
            onenumber2 = numbersrandom2
        }
        }

      function selectroad(obj) {
        var id = obj.getAttribute("id");
        if (id == onerow2){

             done = true;
        }
      }


      function reload(){         
      setInterval(random2, 1000);         
      }
      reload();
      random2();
  </script>

1 Ответ

0 голосов
/ 30 апреля 2020

Я не уверен в вашей задаче «щелкнуть -> остановить», так что сделайте это самостоятельно, но есть основная идея:

Создайте таблицу и сохраните все ее строки и столбцы, затем обновите это с setInterval

Я добавил функциональность, чтобы остановить обновление указанной строки и указанного столбца (добавьте атрибут disabled к элементу)

var table = initTable(document.getElementById("tbl"), 5, 5)

setInterval(update, 1000, table)

setTimeout(() => table.rows[3].element.attributes["disabled"] = "disabled", 3000) // example disable row updating

function initTable(table, rows, columns) {
  var rows = new Array(rows).fill().map(() => table.appendChild(document.createElement("tr")))
  return { element: table, rows: rows.map(row => ({ element: row, columns: new Array(columns).fill().map(() => row.appendChild(document.createElement("td")) )})) }
}

function update(table) {
  for(const row of table.rows)
    if(!row.element.attributes["disabled"])
       for(const column of row.columns)
          if(!column.attributes["disabled"])
            column.innerText = Math.floor(Math.random() * 10)

}
<table id="tbl" style="font-size: 22px;"></table>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...