2012-04-19 243 views
0

我做了一個特殊的按鈕直通使用這個js的顯示使用API​​服務器的狀態,我的問題是,我不能讓這件事全自動加載第一次打開瀏覽器,就必須實際點擊按鈕,否則它不會開始運行。Load當瀏覽器打開

function checkStatus(event) 
{ 
    jQuery.getJSON("url",function(data){ 
     var button = document.getElementById("ServStat"); 
     if (data.status == '1') { 
      jQuery('#ServStat').addClass('online').removeClass('offline'); 
      button.label = 'Online'; } 
     else { 
      jQuery('#ServStat').addClass('offline').removeClass('online'); 
      button.label = 'Offline' 
     } 
    }); 
} 

任何想法,歡迎提前致謝。

+1

被用於任何東西的事件嗎?你爲什麼要混合jQuery和getElementById? – epascarello 2012-04-19 03:52:56

+0

首先,非常感謝您的關注,事實上「事件」和「getElementById」絕對是不必要的。 – Minnen 2012-04-19 23:16:16

回答

2

只需添加代碼的document.ready功能。它在文檔加載完成時被執行。

所以你的代碼會變得有點像,

$(document).ready(function() { 
    jQuery.getJSON("url", function (data) { 
        var button = document.getElementById("ServStat"); 
        if (data.status == '1') { 
            jQuery('#ServStat').addClass('online').removeClass('offline'); 
            button.label = 'Online'; 
        } else { 
            jQuery('#ServStat').addClass('offline').removeClass('online'); 
            button.label = 'Offline' 
        } 
    }); 
}); 

你可以在這裏得到更多的細節:http://api.jquery.com/ready/

+0

一位朋友在我告訴他這個問題時也提出了這個問題,不幸的是,我不知道爲什麼,但這也不起作用。感謝您的想法和興趣 – Minnen 2012-04-19 02:43:54

+0

當涉及到JQuery,這是要做的:),你可能會犯一些語法錯誤或其他的東西。確保你沒有在按鈕點擊事件中放入代碼。 – 2012-04-19 02:45:10

+0

嗯,問題是我們需要按鈕中的事件以及瀏覽器打開時需要加載的事件,請參閱我們需要該事件在瀏覽器啓動時運行一次,之後用戶必須能夠檢查它在任何時候他們想要使用按鈕。 :/ – Minnen 2012-04-19 03:01:29

1
$(function() { 
    checkStatus(); 
}); 
+0

也不工作,這是我們嘗試的第一件事。感謝您的想法和興趣。 – Minnen 2012-04-19 02:46:12

0

感謝大家,我真的appreaciate你花時間和精力來回答我的問題,即時通訊「新」的網站,讓我告訴,在這第一次印象後即時在這裏長期:)。

關於這個問題,以及大多數人已經注意到我從實踐中學習,我沒有真正有深刻的理解,我盡我所能地付出儘可能多的關注,並閱讀我發現的一切,無論如何,我的朋友誰確實有這樣一個深刻的認識注意到,在我的XUL文件中的腳本設定這樣的:

<script type="application/x-javascript" src="chrome://neverendlessbar/content/serverstatus.js" /> 
<script type="application/x-javascript" src="chrome://neverendlessbar/content/jquery-1.7.2.js" /> 
<script type="text/javascript"> 
    $.noConflict(); 
</script> 

當正確的方法是:

<script type="application/x-javascript" src="chrome://neverendlessbar/content/jquery-1.7.2.js" /> 
<script type="text/javascript"> 
    $.noConflict(); 
</script> 
<script type="application/x-javascript" src="chrome://neverendlessbar/content/serverstatus.js" /> 

jQuery的wasnt裝載儀正常。在我們修正了jQuery錯誤之後,我們只添加了一個簡單的「checkStatus();」以此代碼結束我們與此:

function checkStatus(event) 
{ 
    jQuery.getJSON("url",function(data){ 
    var button = document.getElementById("ServStat"); 
    if (data.status == '1') { 
    jQuery('#ServStat').addClass('online').removeClass('offline').attr('label','Online');} 
    else { 
    jQuery('#ServStat').addClass('offline').removeClass('online').attr('label','Offline');}}); 
} 
checkStatus(); 

工作在第一次運行:D。

所以,再次感謝大家,我希望我可以返回的青睞某一天:d。

在閱讀epascarello回覆後,我問,確實「getElementById」沒有必要。

最終代碼

function checkStatus() 
{ 
    jQuery.getJSON("url",function(data){ 
    if (data.status == '1')  {jQuery('#ServStat').addClass('online').removeClass('offline').attr('label','Online');} 
    else  {jQuery('#ServStat').addClass('offline').removeClass('online').attr('label','Offline');}}); 
} 
checkStatus(); 
{ 
    setInterval(changeState, 300000) 
}