2015-05-01 2 views
1


Моя проблема, когда я пытаюсь использовать Exec на мою строку, консоль выдает эту ошибку:
Javascript Exec возвращение нулевой

Uncaught TypeError: Cannot read property '1' of null

Вот мой код:

var regexes = { 
    "bold": [/\[bold\](.*)\[\/bold\]/g,"<b>","</b>"], 
    /*"italics": [[/\[italics\]/g,"<i>"],[/\[\/italics\]/g,"</i>"]], 
    "underline": [[/\[underline\]/g,"<u>"],[/\[\/underline\]/g,"</u>"]], 
    "spoiler": [[/\[spoiler\]/g,"<div class='spoilerEnhanced'>"],[/\[\/spoiler\]/g,"</div>"]], 
    "strikethrough": [[/\[strikethrough\]/g,"<del>"],[/\[\/strikethrough\]/g,"</del>"]],*/ 
} 
var functioners = { 
    "zalgo": [/(\[zalgo\].*\[\/zalgo\])/g], 
    "flip": [/(\[flip\].*\[\/flip\])/g], 
    "superscript": /[a-zA-Z0-9]\^([a-zA-Z0-9]*)/g, 
    "triforce": /(%triforce)/g, 
    "list": /(^\*\ .*)/g 
} 

var replies = document.getElementsByClassName("postMessage"); 
var x = 0 
function memes(x,z) { 
    window.setTimeout(function() { 
     var theNew = ""; 
     theNew = replies[x].innerHTML; 
     for (key in regexes) { 
      if (regexes[key][0].exec(replies[x].innerHTML) !== null) { 
       theNew = regexes[key][1] + regexes[key][0].exec(replies[x].innerHTML)[1] + regexes[key][2]; 
      } 
     } 
     if (x < z) { 
      memes(x+1,z); 
     } 
    },5); 
} 
memes(x,replies.length-1); 

Это код должен проходить через элементы с именем класса postMessage и заменять определенный текст на exec. Ошибка выбрасывается. Аналогичная проблема завершена на уровне RegExp.exec() returns NULL sporadically. Я не могу понять, как это сделать с моей нынешней ситуацией. Было бы здорово, если бы кто-то помог мне с этой проблемой. Обратите внимание: этот код находится в расширении расширения Google Chrome !!

ответ

1

Пожалуйста, не могли бы вы попробовать как в следующем примере:

for (key in regexes) { 
     var m = regexes[key][0].exec(replies[x].innerHTML); 
     if (m !== null) { 
      theNew = regexes[key][1] + m[1] + regexes[key][2]; 
     } 
} 

Пожалуйста, дайте мне знать

+0

Спасибо! Работает отлично. – Billy

Смежные вопросы