2016-07-14 98 views
0

我已經在下拉選擇中調用了以下javascript函數。 基本上我的要求是,可以有很多vndrCd。 但是,當第一次vndrCd是「SFGL」時,警報不應該打開。 如果「SFGL來了第二次則警報應該來的。我不能把這種情況作爲調用的方法是在每一次點擊。有沒有一種方法可以讓我實現這一目標。第二次顯示提醒

function GetOptions(var1) { 
    varId = var1.id; 

    var vndrNbrCdList = document.getElementById('TouchCellDetailForm:vendorNbrCodeList').value; 
    var splitVndrList = vndrNbrCdList.split(','); 

    if (var1.value == '0') { 
     varhiddBox.value = '0'; 
     return; 
    } 

    for (var j = 0; j < splitVndrList.length; j++) { 
     if (splitVndrList[j].split('-')[0] == (var1.value)) { 
      var vndrCd = splitVndrList[j].split('-')[1]; 
      break; 
     } 
    } 

    localStorage.setItem("vendorName", vndrCd); 
    var vendorName1 = localStorage.getItem("vendorName"); 
    if (vendorName1 == 'SFGL') { 
     alert("Salesforce vendor has already been selected.Please select some other vendor"); 
    } 

} 

回答

0

你可以用封閉來保存私有變量來表示'SFGL'是否已經遇到或沒有:

function GetOptionsHelp() { 
    'use strict'; 

    let called = false; 

    return function GetOptions(var1) { 
     // ... your code block 
    if (vendorName1 == 'SFGL') { 
     if (called) { 
      alert("Salesforce vendor has already been selected.Please select some other vendor"); 
     } else { 
      called = true; 
     } 
    } 
} 

你可以這樣調用GetOptionsHelp()(var1)

0

功能試着做這樣的事情作爲一個簡單的SOLU重刑:

(function() { 
     var firstTimeFlag = true; 

     function GetOptions(var1) { 
      varId = var1.id; 

      var vndrNbrCdList = document.getElementById('TouchCellDetailForm:vendorNbrCodeList').value; 
      var splitVndrList = vndrNbrCdList.split(','); 

      if (var1.value == '0') { 
       varhiddBox.value = '0'; 
       return; 
      } 

      for (var j = 0; j < splitVndrList.length; j++) { 
       if (splitVndrList[j].split('-')[0] == (var1.value)) { 
        var vndrCd = splitVndrList[j].split('-')[1]; 
        break; 
       } 
      } 

      localStorage.setItem("vendorName", vndrCd); 
      var vendorName1 = localStorage.getItem("vendorName"); 
      if (vendorName1 == 'SFGL') {      
       if(!firstTimeFlag) { 
        alert("Salesforce vendor has already been selected.Please select some other vendor");       
       } 
       firstTimeFlag = false; 
      } 

     } 
}()); 
+0

我該如何給這個功能打電話? – themaster

+0

它將在應用程序開始時自動調用。這種類型的函數被稱爲IIFE(立即調用函數表達式)。 –