检查点击此TD的值是否与数组的值匹配

时间:2014-09-26 13:05:35

标签: javascript html

所以我正在制作战舰游戏,一切都有效,除了这一件事。我似乎无法弄清楚你会这样做的正确方法。我想检查点击的TD的值是否与数组中的值匹配,如果它确实将innerHTML更改为hit(这是一个X)。 (这)表示点击的TD。你能在这种情况下使用indexOf吗?

    function play() {
           if ((this).value == shipLocations.indexOf((this).value)) {
                (this).innerHTML = hit;
           }
       else {
          (this).innerHTML = miss;    
        }
   }

2 个答案:

答案 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;
&#13;
&#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;。我认为这是非法的; - )