Справка Javascript, таблицы и переключатели

#javascript #html-table #radio-button

#javascript #html-таблица #переключатель

Вопрос:

Я новичок в Javascript и нуждаюсь в некоторой помощи.

Сначала посмотрите на изображение:

вот ссылка.

Приложение для прогнозирования точек.

По сути, когда пользователь выбирает команду-победителя с помощью переключателя, он должен добавить 10 очков команде-победителю в столбце очков и автоматически отсортировать таблицу (сортировка строк) на основе очков, у команды которых больше очков и более высокое положение.

Есть ли у кого-нибудь идеи, как этого добиться?

Вот HTML:

 <div>
<table id="pointsTable" border="1" cellspacing="0" cellpadding="5">
  <tr>
    <th scope="col">name</th>
    <th scope="col">played</th>
    <th scope="col">won</th>
    <th scope="col">lost</th>
    <th scope="col">points</th>
  </tr>
  <tr id="teamA">
    <td>team A</td>
    <td>3</td>
    <td>2</td>
    <td>1</td>
    <td id="teamApoints">20</td>
  </tr>
  <tr id="teamB">
    <td>team B</td>
    <td>4</td>
    <td>2</td>
    <td>2</td>
    <td id="teamBpoints">20</td>
  </tr>
  <tr id="teamC">
    <td>team C</td>
    <td>3</td>
    <td>1</td>
    <td>2</td>
    <td id="teamCpoints">10</td>
  </tr>
  <tr id="teamD">
    <td>team D</td>
    <td>4</td>
    <td>0;</td>
    <td>4</td>
    <td id="teamDpoints">0</td>
  </tr>
</table>
</div>
<div>
<form>
team A vs team C <br/>
team A <input type="radio" name="winner" value="teamA" /> 
team C <input type="radio" name="winner" value="teamC" />
<br/>
<br/>
team B vs team D <br/>
team B <input type="radio" name="winner" value="teamB" /> 
team D <input type="radio" name="winner" value="teamD" />
<br/>
<br/>
team A vs team D <br/>
team A <input type="radio" name="winner" value="teamA" /> 
team D <input type="radio" name="winner" value="teamD" />
<br/>
<br/>
team B vs team C <br/>
team B <input type="radio" name="winner" value="teamB" /> 
team C <input type="radio" name="winner" value="teamC" />
</form>
</div>  
  

Ответ №1:

Вот одна попытка. Я уверен, что это можно сделать намного проще с помощью некоторых плагинов, но я хотел протестировать простой вариант javascript. Вы можете посмотреть это вживую здесь:http://jsfiddle.net/n9jSy/3

     <script type="text/javascript">
    teams = [];

    function initVars() {
        teams[1] = {"name" : "team A", "won" : 2, "lost" : 1};
        teams[2] = {"name" : "team B", "won" : 2, "lost" : 2};
        teams[3] = {"name" : "team C", "won" : 1, "lost" : 2};
        teams[4] = {"name" : "team D", "won" : 0, "lost" : 4};
    }

    function sortByWonAndPlayed(a, b) {
        console.log("sorting");
        var x = a.won;
        var xx = a.won   a.lost;
        var y = b.won;
        var yy = b.won   b.lost;
        return ((x < y) ? 1 : ((x > y) ? -1 : ((yy > xx) ? -1 : ((xx > yy) ? 1 : 0))));
    }

    function updateTable() {
        console.log("updating table");
        var table = document.getElementById("pointsTable");
        teams.sort(sortByWonAndPlayed);

        for (var i = 0; i < teams.length; i  ) {
        var row = table.rows[i 1];
        row.cells[0].innerHTML = teams[i].name;
        row.cells[1].innerHTML = teams[i].won   teams[i].lost;
        row.cells[2].innerHTML = teams[i].won;
        row.cells[3].innerHTML = teams[i].lost;
        row.cells[4].innerHTML = teams[i].won * 10;
        }
    }

    function newValues(result) {
        console.log ("newValues "   result);
        var i;
        if (result === "AC") {
        for (i = 0; i < 4; i  ) {
            if (teams[i].name === "team A") {
            teams[i].won  ;
            }
            else if (teams[i].name === "team C") {
            teams[i].lost  ;
            }
        }
        } else if (result === "CA") {
        for (i = 0; i < 4; i  ) {
            if (teams[i].name === "team A") {
            teams[i].lost  ;
            }
            else if (teams[i].name === "team C") {
            teams[i].won  ;
            }
        }
        } else if (result === "BD") {
        for (i = 0; i < 4; i  ) {
            if (teams[i].name === "team B") {
            teams[i].won  ;
            }
            else if (teams[i].name === "team D") {
            teams[i].lost  ;
            }
        }
        } else if (result === "DB") {
        for (i = 0; i < 4; i  ) {
            if (teams[i].name === "team B") {
            teams[i].lost  ;
            }
            else if (teams[i].name === "team D") {
            teams[i].won  ;
            }
        }
        } else if (result === "AD") {
        for (i = 0; i < 4; i  ) {
            if (teams[i].name === "team A") {
            teams[i].won  ;
            }
            else if (teams[i].name === "team D") {
            teams[i].lost  ;
            }
        }
        } else if (result === "DA") {
        for (i = 0; i < 4; i  ) {
            if (teams[i].name === "team A") {
            teams[i].lost  ;
            }
            else if (teams[i].name === "team D") {
            teams[i].won  ;
            }
        }
        } else if (result === "BC") {
        for (i = 0; i < 4; i  ) {
            if (teams[i].name === "team B") {
            teams[i].won  ;
            }
            else if (teams[i].name === "team C") {
            teams[i].lost  ;
            }
        }
        } else if (result === "CB") {
        for (i = 0; i < 4; i  ) {
            if (teams[i].name === "team B") {
            teams[i].lost  ;
            }
            else if (teams[i].name === "team C") {
            teams[i].won  ;
            }
        }
        }
        updateTable();
    }


    window.onload = function() {
                console.log("started");
        initVars();
                updateTable();
    };
    </script>
  

Комментарии:

1. Отлично. Вам придется улучшить код для выпуска (т. Е. я не знаю, хотите ли вы разрешить несколько нажатий на радиокнопку и т.д.)