0

我的大部分工作都是在 Webkit 上运行并使用 Chrome 的开发工具完成的。但是这段代码不能在 Firefox 中运行;它甚至不会引发控制台错误,所以我不知道出了什么问题。有任何想法吗。我敢肯定它非常容易。我的代码旨在为特定语法“t_”“r_”抛出一个div,这些语法是对外部文档的引用;我试图找到所有提到的引用并用超链接替换它们。我是一个新手 JS 编码器,很抱歉你在这里无疑会看到的幼稚。

(我使用的是 FF 22.0)

<!DOCTYPE html>
<html>
<head>
<script>
function pre_forwarder(){ //First Step
patt_1=/\[r_/g;
patt_2=/\[t_/g;
patt_S_and_R_1 = "[r_";
patt_S_and_R_2 = "[t_";
forwarder(patt_1,patt_S_and_R_1);
forwarder(patt_2,patt_S_and_R_2);
}
function forwarder(Pattern,Pre_SearchReplace){
rule_string = document.getElementById("divid");
rule_string = rule_string.innerText;
var patt1 = Pattern;
while (patt1.test(rule_string)==true) 
      {
      begin_string = patt1.lastIndex;
      fullpar_string = patt1.lastIndex + 5;
      partial_string = rule_string.slice(begin_string,fullpar_string); //5 characters
      //alert("partial_string-"+partial_string);
      refined_string_end = partial_string.indexOf("]");
      refined_str = partial_string.slice(0,refined_string_end); //raw number
      full_str = Pre_SearchReplace+refined_str+"]"; //restructured
      SectionNum = refined_str;
      SearchReplace = full_str; //Variable to pass to parse()
      //alert("S&R="+SearchReplace+" >> full_string-"+full_str);
      //alert("S&R"+SearchReplace+">>SecNum-"+SectionNum+">>Pre-Search-"+Pre_SearchReplace);
      Parse(SearchReplace,SectionNum,Pre_SearchReplace);
      }
 //var patt_end=/\[t_/g;
 }
function Parse(SearchReplace,SectionNum,Pre_SearchReplace){
if (Pre_SearchReplace == patt_S_and_R_1){
ref_URL = "UEB_Ref.html#";
}else if (Pre_SearchReplace == patt_S_and_R_2){
ref_URL = "UEB_Tech.html#";
}
linkCreate = '<a href="javascript:Dude(\''+ref_URL+SectionNum+'\');">Link to ch-'+SectionNum+'</a> ';
document.getElementById("divid").innerHTML = document.getElementById("divid").innerHTML.replace(SearchReplace, linkCreate);
}
function Dude(SectionNum){
alert(SectionNum);
}
</script>
</head>
<body onload="pre_forwarder();">
<button onclick="pre_forwarder();">
New Tool</button>
<div id="divid">
hello [dude] ok the end [r_12.1][r_7] [r_22]
<br>bro try this [t_15.3][t_6] [t_5.5]
</div>
<div id="hyperlink">
</div>
</body>
</html>
4

1 回答 1

1

rule_string = rule_string.innerText;在第 15 行。FF 不知道innerText,你需要使用textContent,或者像这样的修复:

rule_string = rule_string.innerText || rule_string.textContent;

jsFiddle 的现场演示


附带说明:看起来您的应用程序基于全局变量。请不要使用这种编程技术。只要代码不多,它就可以完成这项工作,但是当您的应用程序变得越来越大时,您将失去对大量全局变量的控制。

对于初学者,您可以阅读MDN 上的JavaScript 指南,尤其是第 4、8 和 9 章。

于 2013-07-26T20:39:53.950 回答