0

以下代碼鼠標懸停處理程序不工作,但當我刪除鼠標懸停在相關的代碼工作正常。 (由於chart.draw()工作不正常)。夥計們可以幫我解決這個問題。鼠標懸停事件處理程序不工作當鼠標懸停事件處理程序是一個在谷歌圖表腳本

google.setOnLoadCallback(drawChart); 
    function drawChart() { 

    var data = google.visualization.arrayToDataTable([ 
     ['Task', 'Hours per Day'], 
     ['Work',  11], 
     ['Eat',  2], 
     ['Commute', 2], 
     ['Watch TV', 2], 
     ['Sleep', 7] 
    ]); 

    var options = { 
     title: 'My Daily Activities', 
     legend: 'none', 
     pieSliceText: 'percentage', 
     slices: { } 
    }; 

    var chart = new google.visualization.PieChart(document.getElementById('piechart')); 
    chart.draw(data, options); 

    google.visualization.events.addListener(chart, 'onmouseout', function(e) { 

     var slices = options.slices ; 
     slices[e.row] = {}; 
     options['slices'] = slices;    
     chart.draw(data,options); 
     } 
    ); // mouse out end 

    google.visualization.events.addListener(chart, 'onmouseover', function(e) { 

     var sliceid= e.row; 
     console.log("mouse over"+sliceid); 
     var slices = options.slices ; 
     slices[e.row] = {offset:0.2}; 
     options['slices'] = slices; 
     chart.draw(data,options); 
      } 
    ); // mouse over end 
    } 
+0

奇怪的錯誤,似乎如果添加兩個事件偵聽器,它不工作,但在取出鼠標懸停使鼠標移開工作 – juvian 2014-10-14 16:57:40

+0

但我需要這兩個事件對我圖表。我通過刪除兩個事件處理程序中的代碼進行了檢查,並且放置了一個'alert'消息,兩個事件都正常運行,只有事件處理程序中的chart.draw(數據,選項)存在問題。 – 2014-10-16 03:45:41

回答

0

似乎問題是mouseover重複發生,所以圖表一直重繪,沒有給mouseover事件足夠的時間觸發。這應該使其工作:

google.visualization.events.addListener(chart, 'onmouseover', function(e) { 
     var sliceid= e.row; 
     var slices = options.slices ; 
     if(slices.hasOwnProperty(e.row)){ 
      if(slices[e.row].hasOwnProperty('offset')) return false // if still mouseover, skip 
     } 

工作小提琴:http://jsfiddle.net/qm7f86ez/