簡體   English   中英

單擊保存時出現錯誤,我無法創建新號碼

[英]Getting a error when click save and I am unable to create new number

當我單擊我的引導程序模式按鈕上的保存時,它將嘗試查找下一個可用號碼。

如何返回null引發錯誤。

TypeError:匹配項為null

問題如果在文本區域中找不到數字,則單擊“以自舉程序模式保存”時,將創建一個數字。 當前,如果沒有findAvailableNumber函數返回null,則無法創建數字

Codepen示例

$('#myLink').on('shown.bs.modal', function() {
    var text = getSelectedText();
    $('#title').val(text.trim());
    $('#url').val('http://');
});    

function getSelectedText() {
    var textarea = document.getElementById("message");
    var len = textarea.value.length;
    var start = textarea.selectionStart;
    var end = textarea.selectionEnd;
    var sel = textarea.value.substring(start, end);
    return sel;
}

function findAvailableNumber(textarea){
      //Find lines with links
    var matches = textarea.value.match(/(^|\n)\s*\[\d+\]:/g);

    //Find corresponding numbers
    var usedNumbers = matches.map(function(match){
        return parseInt(match.match(/\d+/)[0]); }
    );

    //Find first unused number
    var number = 1;

    while(true){
        if(usedNumbers.indexOf(number) === -1){
            //Found unused number
            return number;
        }

        number++;
    }

    return number;
}

$('#save-link').on('click', function(e) {
    var textarea = document.getElementById("message");
    var len = textarea.value.length;
    var start = textarea.selectionStart;
    var end = textarea.selectionEnd;
    var sel = textarea.value.substring(start, end);

    var counter = findAvailableNumber(textarea);

    var replace = '[' + $('input#title').val() + ']' + '[' + counter + ']';

    var id = '\n   [' + counter + ']: ' + $('input#url').val();

    if ($('#title').val().length > 0) {
        textarea.value = textarea.value.substring(0,start) + replace +
        textarea.value.substring(end,len) + id;
    } else {

        return false;
    }
});

創建鏈接時在文本區域中的外觀。

[exmple-1][1] and [example-2][2]

[1]: http://www.example.com
[2]: http://www.example.com

您需要檢查<textarea>是否在findAvailableNumber()確實有一個值。 如果不是,請返回1開始。

function findAvailableNumber(textarea){
    var number = 1;
    if(textarea.value){

      //Find lines with links
      var matches = textarea.value.match(/(^|\n)\s*\[\d+\]:/g);

      //Find corresponding numbers
      var usedNumbers = matches.map(function(match){
          return parseInt(match.match(/\d+/)[0]); }
      );

      //Find first unused number
      var number = 1;

      while(true){
          if(usedNumbers.indexOf(number) === -1){
              //Found unused number
              return number;
          }

          number++;
      }
    }

    return number;
}

這是一支更新的筆。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM