2012-03-02 63 views
0

我一直在做我的JS自我訓練很好。自從我終於學習了函數,或者調用函數等之後,我感到非常興奮,因爲我通過用戶可編輯的變量,非用戶變量以及創建的其他函數的函數對所有內容進行了排序,我甚至感到很興奮。所以我有一個問題,我試圖找出。我將錯誤代碼添加到所有可編輯的變量中。我的推理是,我知道我不會一直處於這個位置,工作,生活等等,所以我想確保如果有新來的人,他們將能夠編輯和去。如果他們把a​​lskjdfl放在1,2或3的位置,我想返回一個錯誤。我正在冒險,並加入我自己的錯誤號碼爲樂趣。如果用戶足夠聰明,他們可以在JS代碼上查看源代碼,並查看我的筆記,瞭解顯示錯誤的原因。哦,順便說一下,這是所有內部文件,所以我不擔心網絡。錯誤檢查功能內的腳本

以下是代碼。基本上,如果我轉到變量並輸入一個字母字符或一些字符alsdfjlkjsdaf,它會打破頁面。我試圖找到一種說法,如果在1-3旁邊有什麼東西,那麼將速度設置爲1並給出錯誤。我迄今爲止的嘗試都失敗了,因爲無論我放在那裏,一旦有人物被列出,它仍然會打破頁面。我認爲這個功能的名字看起來很合適。 :)

這是用於滾動條。它顯示文本信息以及與工作有關的事物和時鐘。它嵌入在一個iframe中。

- 感謝所有的芯片!

/* Start speedlimit code - This code ensures speed won't be faster than 3. */ 
function speedLimitSet() 
{ 
if ((speedSet !== 1) && (speedSet !== 2) && (speedSet !== 3)) 
{ 
speedSet = 1 
//error code 1003 
alert("Error Code 1003 - speedSet - Please change speed to 3 or less. This pop up will continue to pop up otherwise. Speed limit is set to 3 or less.") 
} 

} 
//end speedlimit code 

編輯:

/* Quality check for turnOffcrawler. It has to be typed as "Yes" or "No" else will error. */ 
function crawlerSwitch() 
{ 
if (turnOffcrawler == "No") /* Code for general message is included in here. It looks long but it is spaced out. */ 
{ 
width = "1000px"; 
speed = speedSet; 
errorFlag1000 = "No"; 
      } 
else if (turnOffcrawler == "Yes") 
{ 
width = "0px"; 
speed = 0; 
errorFlag1000 = "No"; 
} 
else 
{ 
width = "1000px"; 
speed = speedSet 
errorFlag1000 = "Yes" 
importantMessageError = "Error Code 1000 - turnOffcrawler is not set correctly. Please check settings and/or refer to instructions. &nbsp&nbsp&nbsp&nbsp&nbsp Error Code 1000 - turnoffcrawler is not set correctly. Please check settings and/or refer to instructions." 
} 
} 
//end quality check 

,然後鏈接到:

function marqueeInitCall() 
{ 
marqueeInit({ 
    uniqueid: 'mycrawler', 
    style: { 
     'padding': '0px', 
     'width': width, //change to 1000 for normal, change to 0 for off 
     'background': scrollerBackground, //#00008B is background of menu bar 
     'border': '0px solid black' 
    }, 
    inc: speed, //speed - pixel increment for each iteration of this marquee's movement 
    mouse: mouse, //mouseover behavior ('pause' 'cursor driven' or false) 
    moveatleast: 1, 
    neutral: 150, 
    savedirection: true 
}); 
} 
+0

該功能沒有任何問題,必須在代碼的其餘部分。 'speedSet'如何設置? – 2012-03-02 15:30:25

+0

它可能是1,2或3.它工作得很好,但我想添加一個錯誤檢查功能。所以如果我爲speedSet輸入abc,它會給我一個javascript錯誤並破壞整個代碼。 – traveler84 2012-03-02 16:05:55

+0

我明白這一點。但是如果'speedSet'是一個字符串,你發佈的代碼不會中斷。因此,破壞你的代碼的錯誤必須在別的地方。這就是爲什麼我想知道,如何以及在哪裏爲'speedSet'分配一個值,以及你在用這個變量做什麼。說得通?如果您沒有提供更多信息,我們無法爲您提供幫助,因爲您發佈的代碼沒有任何問題。 – 2012-03-02 16:10:26

回答

0

兩三與代碼的問題:

  1. 你沒有宣佈任何參數。我猜speedSet是爲了成爲函數的參數?

  2. 您使用!==如果你知道你正在傳遞的是已經一個數字,而不是數字字符串,它是正確的。如果你不知道,你想先解析它。

  3. 我可能不會單獨檢查所有三個值,但這可能是一種風格的事情。

  4. 它不會在任何地方保存結果值(所以也許我的#1是錯的)。如果speedSet是一個全局變量,並且該函數只是驗證其值,我建議使用全局變量而不是

這樣:

/* Start speedlimit code - This code ensures speed won't be faster than 3. */ 
function speedLimitSet(speedSet) 
{ 
    speedSet = parseInt(speedSet, 10); // Now it's a number or `NaN` 
    if (isNaN(speedSet) || speedSet < 1 || speedSet > 3) 
    { 
     speedSet = 1; 
     //error code 1003 
     alert("Error Code 1003 - speedSet - Please change speed to 3 or less. This pop up will continue to pop up otherwise. Speed limit is set to 3 or less.") 
    } 

    // Save it somewhere appropriate here 
} 
//end speedlimit code 

其他注意事項:

  • 縮進你的代碼,使一個巨大的差異可讀性。請注意我如何縮進上面的代碼。

  • 雖然JavaScript有恐懼是automatic semicolon insertion,我卑微的建議是從未依靠它,總是把所有必需的分號。 (您需要在speedSet = 1之後。)

  • alert不是處理編程錯誤的好方法。建議拋出異常並在代碼中更高級別處理它。

  • 你可以自由地做你與你的函數名一樣,但二傳手功能約定通常是setXyz(例如,setSpeedLimit而非speedLimitSet)。

+0

非常感謝。我會接受你的建議。當我插入代碼時,它仍然顯示錯誤消息,無論它是1,2還是3.我無法弄清楚代碼中可能導致它的原因。 – traveler84 2012-03-02 15:59:47

+0

嗨TJ,我想知道你是否可以知道我能做些什麼來防止它彈出。無論我放在變量中,它仍會彈出警報。我計劃取消警報,但由於某種原因,聲明正在加載它。 – traveler84 2012-03-02 22:38:21