所以我正在制作战舰游戏,一切都有效,除了这一件事。我似乎无法弄清楚你会这样做的正确方法。我想检查点击的TD的值是否与数组中的值匹配,如果它确实将innerHTML更改为hit(这是一个X)。 (这)表示点击的TD。你能在这种情况下使用indexOf吗?
function play() {
if ((this).value == shipLocations.indexOf((this).value)) {
(this).innerHTML = hit;
}
else {
(this).innerHTML = miss;
}
}
答案 0 :(得分:2)
<script>
var shipLocations = ["5"];
function play(button) {
if (-1 != shipLocations.indexOf((button).value)) {
(button).innerHTML = "hit";
}
else {
(button).innerHTML = "miss";
}
}
</script>
<button value="5" onclick="play(this)">meh</button>
&#13;
假设存储船舶位置而不是船舶对象
答案 1 :(得分:0)
在我看来,你喜欢比较苹果和橘子。 indexOf
会返回您在shipLocations
数组中查找的值的索引,而不是存储在数组中的船舶的实际位置。
<强>更新强>
小提示显示,您还以错误的方式访问值属性。 以下是正确的方法:
if (parseInt((this).getAttribute("value")) == shipLocations[shipLocations.indexOf(parseInt(this.getAttribute("value")))]) {
(this).innerHTML = hit;
}
this
是指html元素,而不是javascript对象,您可以使用.
来访问属性。使用getAttribute("value")
有效。
旁注: 船舶有时被定位,以便他们能够触摸&#34;。我认为这是非法的; - )