2016-08-26 47 views
1

先前繪製的曲線圖我畫一個情節是這樣的:訪問的JavaScript/jQuery的

var items = $.get("./moonlight_sonata_diameter.data", function(data) { 

    items = data.split(/\r?\n/).map(pair => pair.split(/\s+/).map(Number)); 

    $(function() { 

    plot = $.plot($("#placeholder"), 
        [ { data: linePoints} ], { 
         series: { 
          lines: { show: true } 
         }, 
         crosshair: { mode: "x" }, 
         grid: { hoverable: true, autoHighlight: false }, 
         yaxis: { min: 0, max: 5 } 

        }); 
     }); 
    }); 

現在,在稍後的時間的時刻,我想更新劇情的十字線。但是,因爲它嵌入了很多函數,所以我不知道如何訪問它,因爲我對jQuery不熟悉。

在該腳本,我可以運行:

plot.setCrosshair({x: 100}) 

然而,在另一個腳本,在其他時間,也沒有所謂的劇情對象。有沒有辦法訪問它仍然?

+0

你可以創建這個jsfiddle,這將很容易解決你的問題。 – localhost

+0

我看到情節是窗口的一部分,但它仍然沒有在index.html中執行它:window.plot.setCrosshair({x:500})請參閱:http://plnkr.co/edit/QW9gOtIhgocKByCRBm6G?p=preview – dorien

回答

1

實際上,您已將您的繪圖創建代碼置於文檔就緒功能中,並且您的plot.setCrosshair({x:100})在繪圖創建代碼之前執行。所以一個簡單的settimeout將會訣竅。

只是

setTimeout(function(){ plot.setCrosshair({x: 41})}, 3000); 

更換

plot.setCrosshair({x: 4}) 

,這將很好地工作。如果您在加載完整的dom後調用setCrosshair函數,那麼您將不需要setTimeout函數。我希望這會有所幫助,如果沒有的話,讓我知道。 檢查它在http://plnkr.co/edit/3cMHmzWEIk6c39mblb0Z?p=preview