Bladeren bron

上传替换知识点划线

namejr 4 jaren geleden
bovenliggende
commit
bacb2f5811
1 gewijzigde bestanden met toevoegingen van 31 en 2 verwijderingen
  1. 31 2
      EBook.Web/Scripts/MarkKlg.js

+ 31 - 2
EBook.Web/Scripts/MarkKlg.js

@@ -60,6 +60,32 @@ function AddDealKnTextFunc(WordsStr, KlgArr, KlgCodeArr) {
     }
     return WordsStr;
 }
+// 处理包含和被包含的关系
+function DealContrainFunc(klgStr, klgcodeStr) {
+    var klgArr = klgStr.split("|");
+    var klgcodeArr = klgcodeStr.split("|");
+    var IndexArr = [];
+    for (var i = 0; i < klgArr.length; i++) {
+        for (var j = 0; j < klgArr.length; j++) {
+            if (i != j && klgArr[i].indexOf(klgArr[j]) > -1 && IndexArr.indexOf(j) == -1) {
+                IndexArr.push(j);
+            }
+            else if (i != j && klgArr[j].indexOf(klgArr[i]) > -1 && IndexArr.indexOf(i) == -1) {
+                IndexArr.push(i);
+            }
+        }
+    }
+    IndexArr.sort().reverse();
+    for (var i = 0; i < IndexArr.length; i++) {
+        klgArr.splice(IndexArr[i], 1);
+        klgcodeArr.splice(IndexArr[i], 1);
+    }
+    var ReData = {
+        klgStr: klgArr.join("|"),
+        klgcodeStr: klgcodeArr.join("|")
+    };
+    return ReData;
+}
 
 //设置页面的展示内容
 function InitPageData(klg, klgcode) {
@@ -84,13 +110,16 @@ function InitPageData(klg, klgcode) {
         klg = klg.replace(ReKlgArr[i], "").replace("||", "").replace(/^\|/, "").replace(/\|$/, "");
         klgcode = klgcode.replace(ReKlgCodeArr[i], "").replace("||", "").replace(/^\|/, "").replace(/\|$/, "");
     }
+    // 判断是否存在包含和被包含关系
+    var ReData = DealContrainFunc(klg, klgcode);
+    klg = ReData["klgStr"];
+    klgcode = ReData["klgcodeStr"];
     words = MarkKnowledge("<p>" + words + "</p>", klg.split("|"), klgcode.split("|"));
     words = AddDealKnTextFunc(words, ReKlgArr, ReKlgCodeArr);
     if (words !== null && words !== "") {
         var reg = /<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi;
         words = words.replace(reg, function (replacement) { return HTMLEncode(replacement); });
     }
-
     if (words !== null && words !== "") {
         //$("body").html(words);
         //知识点绑定事件
@@ -131,7 +160,7 @@ function MarkKnowledge(htmls, Knowledge, code) {
                 }
             }
             //去掉未能标志的知识点标志
-            matchVal = matchVal.replace(/#¥@<(\d+)>((\w+\s*-?)+)#¥@(d|ed|s|es|er|ers|ing)?/gi, "<a class='TextMark' title='点击可查看知识点课件' word='$2' code='$1'>$2$4</a>")
+            matchVal = matchVal.replace(/#¥@<(\d+)>(('?\w+\s*-?)+)#¥@(d|ed|s|es|er|ers|ing)?/gi, "<a class='TextMark' title='点击可查看知识点课件' word='$2' code='$1'>$2$4</a>")
             matchVal = matchVal.replace(/#¥@/g, "");
 
             return ">" + matchVal + "<";