2016-05-25 87 views
0

我已經在angular-js中爲鼠標懸停文本編寫了代碼。我需要懸停文本出現在鼠標指針所在的位置。
但不幸的是沒有發生。懸停文本仍然固定在特定位置,並且google-Chrome開發人員工具顯示錯誤Uncaught TypeError: Cannot read property 'style' of null
即使我已指定id中的div標記,但它未檢測到id屬性。angularjs:鼠標懸停文本沒有出現在鼠標(x,y)位置

這裏是下面的代碼:

<!DOCTYPE html> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
    <title></title> 
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.2/angular.min.js"></script> 
    <script> 
    var tooltipSpan = document.getElementById("demo"); 

    window.onmouseover = function (e) { 
    var x = e.clientX, 
     y = e.clientY; 
    tooltipSpan.style.top = (y + 20) + 'px'; 
    tooltipSpan.style.left = (x + 20) + 'px'; 
}; 
    </script> 

</head> 
<body ng-app=""> 

    <div id="demo" ng-init="tooltip=false" ng-show="tooltip" style="border: 1px solid black;width: 230px;height: 40px;background-color: gray;color: white;z-index: 1;position: fixed;">Hi..Welcome In Angular JS World.</div> 


    <table border=1> 
    <tr><th>col1</th><th>col2</th></tr> 
    <tr><td ng-mouseover="tooltip=true" ng-mouseleave="tooltip=false">data 1</td> <td>data 2</td></tr> 
    <tr><td>data 1</td> <td ng-mouseover="tooltip=true" ng-mouseleave="tooltip=false">data 2</td></tr> 
    </table> 

</body> 
</html> 

回答

0

既然你有你的ja vascript在你的html之前加載,document.getElementById("demo")最後爲空,因爲DOM尚未加載。

試着將那個javascript移到底部(我把它放在body標籤後面,但不知道這是最佳實踐)。這樣,DOM首先加載,然後你的JavaScript知道在哪裏可以找到「demo」的id。

+0

謝謝@sainid工作:) – aiman

0

在頁面加載完成之前var tooltipSpan = document.getElementById("demo");正在執行的問題 - 因此變量tooltipSpannull

我已經修改了你的榜樣設置tooltipSpan一次身體已加載

<!DOCTYPE html> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
    <title></title> 
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.2/angular.min.js"></script> 
    <script> 



     var tooltipSpan; 

    function setTooltip() { 
     tooltipSpan = document.getElementById("demo"); 
    } 

    window.onmousemove = function (e) { 
     if (!tooltipSpan) return; 
    var x = e.clientX, 
     y = e.clientY; 
    tooltipSpan.style.top = (y + 20) + 'px'; 
    tooltipSpan.style.left = (x + 20) + 'px'; 
}; 
    </script> 

</head> 
<body ng-app="" onload='setTooltip()'> 

    <div id="demo" ng-init="tooltip=false" ng-show="tooltip" style="border: 1px solid black;width: 230px;height: 40px;background-color: gray;color: white;z-index: 1;position: fixed;">Hi..Welcome In Angular JS World.</div> 


    <table border=1> 
    <tr><th>col1</th><th>col2</th></tr> 
    <tr><td ng-mouseover="tooltip=true" ng-mouseleave="tooltip=false">data 1</td> <td>data 2</td></tr> 
    <tr><td>data 1</td> <td ng-mouseover="tooltip=true" ng-mouseleave="tooltip=false">data 2</td></tr> 
    </table> 

</body> 
</html> 
+0

謝謝你的回覆。您的建議錯誤消失了,但懸停文本仍然保持不變。正如@sainid提到的那樣,我在body標籤後移動

  • 11. 將鼠標懸停在鼠標上
  • 12. 在腳本中設置鼠標懸停
  • 13. C#XAML鼠標位置懸停區域
  • 14. 突出鼠標懸停表
  • 15. 鼠標懸停彈出
  • 16. 設置鼠標懸停
  • 17. 鼠標懸停上出現的鏈接?
  • 18. 圖像,鼠標懸停,按鈕出現
  • 19. 內聯菜單出現鼠標懸停
  • 20. 在鼠標懸停/鼠標移動時顯示X軸值
  • 21. jQuery的鼠標懸停鼠標移出刪除設置變量
  • 22. 在鼠標懸停/懸停替換文本與選擇標記
  • 23. 在鼠標懸停上切換文本
  • 24. 鼠標懸停在文本HTML
  • 25. 將鼠標懸停在文本框上?
  • 26. 鼠標懸停時出現在圖片上的CSS文本
  • 27. 將鼠標懸停在文本上時出現圖像
  • 28. jcarousel停在鼠標懸停
  • 29. 將鼠標懸停在圓上X
  • 30. 對鼠標懸停沒有過渡效果,並用css鼠標懸停