更改表中按钮的文本

时间:2013-10-04 16:58:05

标签: javascript html button

我没有使用javascript进行编程,而是来自Java背景。我试图在我的代码中使用事件处理程序,我遇到了问题。我有一个3x3表,因为我正在制作一个tic tac toe游戏,当用户点击其中一个框我想将按钮文本更改为X.所以我有我的表的html和按钮是表数据和单击相同功能时,我已经分配了所有按钮。单击一个按钮时,我将其ID发送到我的函数,并从那里尝试使用此ID参数来设置文本,但此时此刻没有发生,我有点困惑为什么不这样做。我也做了一个提示(paramID)和paramID是正确的,所以我不明白发生了什么。任何帮助将不胜感激!这可能是我做的愚蠢。我试过firefox和chrome ......

这是我的代码:

<table id="tictable" border="1" 

<tr id="row1">
<td><button id="button1" type="button" onclick="actionPerformed(this.id)"</button></td>
<td><button id="button2" type="button" onclick="actionPerformed(this.id)"</button></td>
<td><button id="button3" type="button" onclick="actionPerformed(this.id)"</button></td>
</tr>


<tr >
<td><button id="button4" type="button" onclick="actionPerformed(this.id)"</button></td>
<td><button id="button5" type="button" onclick="actionPerformed(this.id)"</button></td>
<td><button id="button6" type="button" onclick="actionPerformed(this.id)"</button></td>
</tr>


<tr id="row3">
<td><button id="button7" type="button" onclick="actionPerformed(this.id)"</button></td>
<td><button id="button8" type="button" onclick="actionPerformed(this.id)"</button></td>
<td><button id="button9" type="button" onclick="actionPerformed(this.id)"</button></td>
</tr>

</table>

<script type="text/javascript">



function actionPerformed(paramID)
{

    document.getElementById(paramID).value = "X";

}

</script>

3 个答案:

答案 0 :(得分:2)

您需要使用.innerHTML。

function actionPerformed(paramID)
{
    document.getElementById(paramID).innerHTML = "X";
}

演示here

最好的方法是删除所有内联JavaScript并使用此

window.onload = function () {
    var all_buttons = document.querySelectorAll('button');
    console.log(all_buttons);
    for (i = 0; i < all_buttons.length; i++) {
        all_buttons[i].addEventListener('click',function () {
            this.innerHTML = 'X';
        });
    };
};

<强> Demo

答案 1 :(得分:1)

塞尔吉奥说了什么,加上你的所有按钮:

<button id="button1" type="button" onclick="actionPerformed(this.id)"</button>

应该是:

<button id="button1" type="button" onclick="actionPerformed(this.id)"></button>

查看缺少的>

答案 2 :(得分:1)

您忽略了关闭开场<table><button>标签。在进行函数调用时,只需在parens中传递this并在函数中拉出id。然后将按钮的内部更新为X.如果要将输出替换为X,则必须访问parentNode,然后更新父级的innerHTML

<table id="tictable" border="1">
<tr id="row1">
<td><button id="button1" type="button" onclick="actionPerformed(this)">&nbsp;</button></td>
<td><button id="button2" type="button" onclick="actionPerformed(this)">&nbsp;</button></td>
<td><button id="button3" type="button" onclick="actionPerformed(this)">&nbsp;</button></td>
</tr> 
<tr >
<td><button id="button4" type="button" onclick="actionPerformed(this)">&nbsp;</button></td>
<td><button id="button5" type="button" onclick="actionPerformed(this)">&nbsp;</button></td>
<td><button id="button6" type="button" onclick="actionPerformed(this)">&nbsp;</button></td>
</tr>
<tr id="row3">
<td><button id="button7" type="button" onclick="actionPerformed(this)">&nbsp;</button></td>
<td><button id="button8" type="button" onclick="actionPerformed(this)">&nbsp;</button></td>
<td><button id="button9" type="button" onclick="actionPerformed(this)">&nbsp;</button></td>
</tr>
</table>

    <script type="text/javascript">

    function actionPerformed(domObj)
    {
        domObj.innerHTML = "X";
    }

    </script>

我只是把它复制到了一个jsfiddle,它起作用了