2017-03-11 91 views
0

这是一个简单的代码,它应该简单地更改目标div的边框和背景颜色,当它们悬停时。颜色应该根据拖动的内容而改变,它应该决定ondragstart。然而没有任何反应,事实上我的光标是不允许的。 (通过它循环)那么问题是什么。ondragover事件不起作用

<!DOCTYPE HTML> 
<html> 
<head> 
    <title>Play four-in-a-Row</title> 
    <meta charset=ütf-8"> 
    <meta name="viewport" content="width=device-width, initial-scale=1"> 
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"> 
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script> 
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> 
    <link rel="stylesheet" href="styles.css"> 
</head> 
<div class="container-fluid"> 
<body onload="boardSetup()"> 
    <div id="header" > 
    <h1 id = "Main">Four-in-a-Row</h1> 
    </div> 
    <hr> 
    <div id = "drop"> 
     <div class="row"> 
     <div class = "col-xs-1" ></div> 
      <div class = "col-xs-1" ></div> 
      <div class = "square col-xs-1" data-toggle="tooltip" title = "Column 1" ondragover = "dragOver(event)" ></div> 
      <div class = "square col-xs-1" data-toggle="tooltip" title = "Column 2" ondragover = "dragOver(event)"></div> 
      <div class = "square col-xs-1" data-toggle="tooltip" title = "Column 3" ondragover = "dragOver(event)"></div> 
      <div class = "square col-xs-1" data-toggle="tooltip" title = "Column 4" ondragover = "dragOver(event)"></div> 
      <div class = "square col-xs-1" data-toggle="tooltip" title = "Column 5" ondragover = "dragOver(event)"></div> 
      <div class = "square col-xs-1" data-toggle="tooltip" title = "Column 6" ondragover = "dragOver(event)"></div> 
      <div class = "square col-xs-1" data-toggle="tooltip" title = "Column 7" ondragover = "dragOver(event)"></div> 
     </div> 
    </div> 
    <hr> 
    <div id="board" > 
     <div class="row"> 
      <div class = "col-xs-1" ></div> 
      <div class = "col-xs-1" ></div> 
      <div class = "square col-xs-1" ></div> 
      <div class = "square col-xs-1" ></div> 
      <div class = "square col-xs-1" ></div> 
      <div class = "square col-xs-1" ></div> 
      <div class = "square col-xs-1" ></div> 
      <div class = "square col-xs-1" ></div> 
      <div class = "square col-xs-1" ></div> 
     </div> 
     <div class="row"> 
      <div class = "col-xs-1" ></div> 
      <div class = "col-xs-1" ></div> 
      <div class = "square col-xs-1" ></div> 
      <div class = "square col-xs-1" ></div> 
      <div class = "square col-xs-1" ></div> 
      <div class = "square col-xs-1" ></div> 
      <div class = "square col-xs-1" ></div> 
      <div class = "square col-xs-1" ></div> 
      <div class = "square col-xs-1" ></div> 
     </div> 
     <div class="row"> 
      <div class = "col-xs-1" ></div> 
      <div class = "col-xs-1" ></div> 
      <div class = "square col-xs-1" ></div> 
      <div class = "square col-xs-1" ></div> 
      <div class = "square col-xs-1" ></div> 
      <div class = "square col-xs-1" ></div> 
      <div class = "square col-xs-1" ></div> 
      <div class = "square col-xs-1" ></div> 
      <div class = "square col-xs-1" ></div> 
     </div> 
     <div class="row"> 
      <div class = "col-xs-1" ></div> 
      <div class = "col-xs-1" ></div> 
      <div class = "square col-xs-1" ></div> 
      <div class = "square col-xs-1" ></div> 
      <div class = "square col-xs-1" ></div> 
      <div class = "square col-xs-1" ></div> 
      <div class = "square col-xs-1" ></div> 
      <div class = "square col-xs-1" ></div> 
      <div class = "square col-xs-1" ></div> 
     </div> 
     <div class="row"> 
      <div class = "col-xs-1" ></div> 
      <div class = "col-xs-1" ></div> 
      <div class = "square col-xs-1" ></div> 
      <div class = "square col-xs-1" ></div> 
      <div class = "square col-xs-1" ></div> 
      <div class = "square col-xs-1" ></div> 
      <div class = "square col-xs-1" ></div> 
      <div class = "square col-xs-1" ></div> 
      <div class = "square col-xs-1" ></div> 
     </div> 
     <div class="row"> 
      <div class = "col-xs-1" ></div> 
      <div class = "col-xs-1" ></div> 
      <div class = "square col-xs-1" ></div> 
      <div class = "square col-xs-1" ></div> 
      <div class = "square col-xs-1" ></div> 
      <div class = "square col-xs-1" ></div> 
      <div class = "square col-xs-1" ></div> 
      <div class = "square col-xs-1" ></div> 
      <div class = "square col-xs-1" ></div> 
     </div> 

    </div> 
    <div class= "piece"> 
      <img src= "player_1.png" alt= "Player 1 piece" height = 15% width = 15% id = "player1" data-toggle="tooltip" title = "Player one's piece" class ="player1 piece" draggable= "true" ondragstart ="dragStart(event)" > </img> 
      <img src= "player_2.png" alt= "Player 2 piece" height = 15% width = 15% id = "player2" data-toggle="tooltip" title = "Player two's piece" class = "player2 piece" draggable= "true" ondragstart ="dragStart(event)"> </img>   
    </div> 
    <script> 
    var map; 
    var dragged = 0; 
     function boardSetup(){ 
      var board=document.getElementsByClassName("square"); 
      var blank = "<img src = blank.png alt= blank class = blank>"; 
      for(var x = 0; x < board.length; x++){ 
       board[x].innerHTML(blank) 
      } 

      document.getElementById("board").innerHTML=board; 
      var temp2 = document.getElementsByClassName("blank"); 
      for(var z in temp2){ 
       temp2[z].className += " piece"; 
      } 
     } 

     function gameStart(){ 
     } 


     $(document).ready(function(){ 
      $('[data-toggle="tooltip"]').tooltip();  
     }); 

     function dragStart(event) { 
      event.dataTransfer.setData("text", event.target.id); 
      if(event.target.id == "player1") 
       dragged = 1; 
      else if(event.target.id){ 
       dragged = 2; 
      } 
     } 

     function dragOver(event){ 
      event.preventDefault(); 
      if(draaged = 1){ 
       event.target.style.border = "blue"; 
       event.target.style.background-color = "#59F2F7";  
      }else if(draaged = 2){ 
       event.target.style.border-clolor = "red"; 
       event.target.style.background-color = " #F75D59"; 
      } 
     } 


</script> 
<input type="button" onclick="boardSetup()" value="Reset" class="btn btn-danger btn-block" > </input> 
</div> 
</body> 

<footer> 
    <hr> 
    <a href="../index.html">&lt;- Back to launch page</a> 
    <hr> 
    <p style= "text-align: right"> done by <br>Justin Michel <br> u14369852</p> 
    <hr> 
</footer> 

+0

你使用控制台进行debuigging吗? event.target.style.border-clolor =“red”; // camel cased and misspel event.target.style.background-color =“#59F2F7”; //应该是camelcased – konradluka

回答

0

下面的语句是无效的JavaScript代码。它们被解释为子表达式表达式,然后试图为表达式分配一个没有意义的值。你必须与相应的驼峰变种来代替下面几行:

  • event.target.style.border-clolor = "red";
  • event.target.style.background-color = " #F75D59";

替换为:

event.target.style.backgroundColor = "#59F2F7";

如此反复。 (并没有这样的东西clolor

另一个错误是board[x].innerHTML(blank) - innerHTML是不是一个函数。这是一个属性,这里是链接到文档:https://developer.mozilla.org/en-US/docs/Web/API/Element/innerHTML

如果您打开控制台,您可以发现这两个错误。该控制台甚至可以让您跳转到代码中的违规行,从而使调试变得简单。它可能不是完整的解决方案,但修复这些对于您的代码工作是必需的。被引用的样式表没有提供问题,所以不可能完全回答你的问题(例如,你的“阻塞”游标可能是由样式表中的一些样式定义引起的)。

您发布的代码存在更多问题,尽管可能与拖动事件没有直接关系,但仍值得提高。

img元素是一个void(空)元素:在HTML中,在空元素上使用结束标记通常是无效的。它不是用而是用开头标签上的“/>”关闭。 input元素也是如此。这里是链接到文档:https://developer.mozilla.org/en-US/docs/Glossary/Empty_element

body标记不应该嵌套在div内,即使它工作,这不是一个好的做法。 https://www.w3.org/TR/html5/sections.html#the-body-element