将 JavaScript onclick() 添加到 HTML 表单提交

use*_*633 6 html javascript

我有以下脚本:

<script type= 'text/javascript'>
    function displayPlayer() {
        var input = document.getElementById("player_stuff").elements;
        var position = input[0];
        var player_id = input[1];

        document.getElementById('disp_player').innerHTML = position + player_id
    }
</script>
Run Code Online (Sandbox Code Playgroud)

以及一个简单的 HTML 表单:

<form id = 'player_stuff' onsubmit = 'displayPlayer()'>

    Player's Position:<br>
        <input type="radio" name="position" value="p1" checked>Position One
        <input type="radio" name="position" value="p2" checked>Position Two
        <input type="radio" name="position" value="p3" checked>Position Three
        <input type="radio" name="position" value="p4" checked>Positin Four
    <br/>
    Add by Player ID:<br>
        <input type='text' name='player_id'>
        <input type="submit" value="Submit Player" id='smit' >
</form>

<div id = 'roster'>
    <h3>Current Roster</h3>
    <p id= 'disp_player'></p>
</div>
Run Code Online (Sandbox Code Playgroud)

这个想法是,当我点击“提交球员”按钮时,它将触发displayPlayer()函数并将位置名称和球员 ID 添加到 <p id= 'disp_player'></p>标签中。

我做错了什么,因为什么也没有出现?

Vic*_*ory 4

您可以使用 完全避免提交<button type="button">,然后可以绑定onclick的事件button。您可以通过避免使用输入列表来简化事情,而是使用querySelector

<form id = 'player_stuff'>
    Player's Position:<br>
    <input type="radio" name="position" value="p1" checked>Position One
    <input type="radio" name="position" value="p2">Position Two
    <input type="radio" name="position" value="p3">Position Three
    <input type="radio" name="position" value="p4">Positin Four
    <br/>
    Add by Player ID:<br>
    <input type='text' name='player_id'>
    <input type="button" value="Submit Player" id='smit' >
</form>
<div id="disp_player"></div>
Run Code Online (Sandbox Code Playgroud)

然后使用querySelectorquerySelectorAll

document.getElementById('smit').onclick = function () {
    var checkedPosition =
        document.querySelectorAll("#player_stuff [name='position']:checked");
    var playerId =
        document.querySelector("#player_stuff [name='player_id']");
    var position = checkedPosition[0].value;
    var player_id = playerId.value;

    document.getElementById('disp_player').innerHTML =
        position + " " + player_id;
}
Run Code Online (Sandbox Code Playgroud)

请参阅此处的小提琴。