2013-06-04 51 views
0

我得到了一個腳本來修改表單輸入中的http或https。Javascript - 一個功能中的多個任務不能正常工作

這是我的腳本:

  function MakeLinkSafe(){ 
       var f = document.getElementById('f') 
       str = trim(f.value); 
       if(str.substr(0, 7) == 'http://'){ 
        f.value = str.substr(7); 
       } 
       else if(str.substr(0, 8) == 'https://'){ 
        f.value = str.substr(8); 
       } 
       return true; 




       var fb = document.getElementById('fb') 
       str = trim(fb.value); 
       if(str.substr(0, 7) == 'http://'){ 
        fb.value = str.substr(7); 
       } 
       else if(str.substr(0, 8) == 'https://'){ 
        fb.value = str.substr(8); 
       } 
       return true; 


      } 

當我把一個網址在我的「F」的輸入,而我離開我的「FB」空,反之亦然,它的工作。但是當我把url放在兩個輸入中。它不起作用。

我的密碼有問題嗎?謝謝

+4

'return true;'後面的任何內容都不會執行。你太早從功能返回。 –

+1

所以我必須在代碼的結尾處返回true? –

+0

我不確定回到那裏的目的是什麼,但是是的,中間的回報是肯定的。 –

回答

1

這是因爲你有一個return語句上的檢查後「 F」元素......

如下更改代碼:

function MakeLinkSafe() { 
    var checkF = function() { 
     var f = document.getElementById('f'); 
     str = trim(f.value); 
     if (str.substr(0, 7) == 'http://') { 
      f.value = str.substr(7); 
     } 
     else if (str.substr(0, 8) == 'https://') { 
      f.value = str.substr(8); 
     } 
     return true; 
    } 

    var checkFB = function() { 
     var fb = document.getElementById('fb'); 
     str = trim(fb.value); 
     if (str.substr(0, 7) == 'http://') { 
      fb.value = str.substr(7); 
     } 
     else if (str.substr(0, 8) == 'https://') { 
      fb.value = str.substr(8); 
     } 
     return true; 
    } 
    return checkF() && checkFB(); 
} 

你可以,當然,創建一個函數接受一個id採取適當的功能優勢,通過MRID提到a above ...沿着以下幾條線可能會做的事情:

function MakeLinkSafe() { 
    var check = function (id) { 
     var element = document.getElementById(id); 
     str = trim(element.value); 
     if (str.substr(0, 7) == 'http://') { 
      element.value = str.substr(7); 
     } 
     else if (str.substr(0, 8) == 'https://') { 
      element.value = str.substr(8); 
     } 
     return true; 
    } 
    return check('f') && check('fb'); 
} 
+0

感謝您的簡單回答。這樣更容易。 –

+0

快樂!很高興我能幫上忙。 – FarligOpptreden

1

你的代碼的代碼片段是無法訪問

var fb = document.getElementById('fb') 
       str = trim(fb.value); 
       if(str.substr(0, 7) == 'http://'){ 
        fb.value = str.substr(7); 
       } 
       else if(str.substr(0, 8) == 'https://'){ 
        fb.value = str.substr(8); 
       } 
       return true; 

到達上面的代碼之前,該函數將已經退出,真正的返回值。

一種方式做如下(此代碼將同時修改你的鏈接,並在時發出警報真都是安全的鏈接。

 function MakeLinkSafe(linkid){ 
      var f = document.getElementById(linkid) 
      str = trim(f.value); 
      if(str.substr(0, 7) == 'http://'){ 
       f.value = str.substr(7); return true; 
      } 
      if(str.substr(0, 8) == 'https://'){ 
       f.value = str.substr(8); return true; 
      } 
      return false; 
     } 

     var f = MakeLinkSafe('f'); 
     var fb = MakeLinkSafe('fb'); 

     if(f&&fb)alert(true);else alert(false); 
+0

您正在重複兩次相同的代碼,而不是使用函數的優點。 – mrida

+0

請您回答 –