tasklib_book.js 70 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569
  1. //播放音频图片地址
  2. var PicInfo = {
  3. answerPointImgUrl: "file:///android_asset/js/update-answer.png",
  4. yaoshiShowImgUrl: "file:///android_asset/js/yaoshi-show.png",
  5. yaoshiHideImgUrl: "file:///android_asset/js/yaoshi-hide.png",
  6. recordPlayImgUrl: "file:///android_asset/js/play.png",
  7. recordPauseImgUrl: "file:///android_asset/js/pause.png",
  8. audioPlayImgUrl: "file:///android_asset/js/dynaiselaba.gif",
  9. audioPauseImgUrl: "file:///android_asset/js/dynaiselaba.png"
  10. }
  11. //本地调用用的资源
  12. var PicInfo1 = {
  13. answerPointImgUrl: "../Images/update-answer.png",
  14. yaoshiShowImgUrl: "../Images/yaoshi-show.png",
  15. yaoshiHideImgUrl: "../Images/yaoshi-hide.png",
  16. KouYuTagImgUrl: "../Images/KY.png",
  17. recordPlayImgUrl: "../Images/play.png",
  18. recordPauseImgUrl: "../Images/pause.png",
  19. audioPlayImgUrl: "../Images/dynaiselaba.gif",
  20. audioPauseImgUrl: "../Images/dynaiselaba.png"
  21. }
  22. // 高亮
  23. var styleWPSContrl = {
  24. wordFlag: true,
  25. phraseFlag: true,
  26. sentenceFlag: true
  27. }
  28. // 表格处理Start
  29. var pressTableFlag = false;
  30. var GetPadVal = function () {
  31. var PaddingVal = $(document.body).css("padding");
  32. var PadValArr = PaddingVal.split(" ");
  33. if (PadValArr.length > 2) {
  34. return parseFloat(PadValArr[1]) + parseFloat(PadValArr[3]);
  35. }
  36. else if (PadValArr.length > 1) {
  37. return parseFloat(PadValArr[1]) * 2;
  38. }
  39. else {
  40. return parseFloat(PadValArr[0]) * 2;
  41. }
  42. };
  43. // 获取最大字符长度的字符串(起决定宽度的字符串/将字符去除HTML标签)(使用)
  44. var removeHtmlFunc = function (HtmlStr) {
  45. // 清除非长度标签
  46. var pattStr = new RegExp(/<(img){1}.*?>/ig);
  47. var matchesArr = HtmlStr.match(pattStr);
  48. if (matchesArr != null && (matchesArr != undefined && matchesArr.length > 0)) {
  49. for (var i = 0; i < matchesArr.length; i++) {
  50. HtmlStr = HtmlStr.replace(matchesArr[i], "");
  51. }
  52. }
  53. pattStr = new RegExp(/(<(p){1}.*?>).*?(<\/\2>)/ig);
  54. matchesArr = HtmlStr.match(pattStr);
  55. // 判断是否存在p标签
  56. if (matchesArr != null || (matchesArr != undefined && matchesArr.length > 0)) {
  57. pattStr = new RegExp(/(<(p|b|span|u){1}.*?>).*?(<\/\2>)/i);
  58. for (var i = 0; i < matchesArr.length; i++) {
  59. var NewHtmlStr = matchesArr[i];
  60. while (pattStr.test(NewHtmlStr)) {
  61. var TmatchesArr = NewHtmlStr.match(pattStr);
  62. if (TmatchesArr.length > 0) {
  63. // 存在P标签
  64. NewHtmlStr = NewHtmlStr.replace(TmatchesArr[1], "").replace(TmatchesArr[3], "");
  65. }
  66. }
  67. if (i == 0 || (HtmlStr.length < NewHtmlStr.length)) {
  68. HtmlStr = NewHtmlStr;
  69. }
  70. }
  71. }
  72. else {
  73. pattStr = new RegExp(/(<(b|span|u){1}.*?>).*?(<\/\2>)/i);
  74. if (pattStr.test(HtmlStr)) {
  75. while (pattStr.test(HtmlStr)) {
  76. var matchesArr = HtmlStr.match(pattStr);
  77. if (matchesArr.length > 0) {
  78. HtmlStr = HtmlStr.replace(matchesArr[1], "").replace(matchesArr[3], "");
  79. }
  80. }
  81. }
  82. }
  83. return HtmlStr;
  84. };
  85. // 获取最大字符长度的字符串(起决定宽度的字符串/将字符去除HTML标签)(替换,不用)
  86. var dealTdTextFunc = function (HtmlStr) {
  87. var ReStr = "";
  88. var ReNumber = 0;
  89. var pattStr = new RegExp(/<P.*?<\/P>/i);
  90. if (pattStr.test(HtmlStr)) {
  91. while (pattStr.test(HtmlStr)) {
  92. var matchesArr = HtmlStr.match(pattStr);
  93. $("#pContrainId").html(matchesArr[0]);
  94. HtmlStr = HtmlStr.replace(matchesArr[0], "");
  95. if (ReNumber <= $("#pContrainId").text().length) {
  96. ReNumber = $("#pContrainId").text().length;
  97. ReStr = $("#pContrainId").text();
  98. }
  99. }
  100. }
  101. else {
  102. $("#pContrainId").html(HtmlStr);
  103. ReStr = $("#pContrainId").text();
  104. }
  105. return ReStr;
  106. };
  107. var AdjustTableFunc = function () {
  108. // 添加宽度处理
  109. var ScreenWidth = $(document.body).width();
  110. $(document.body).css("width", "999999px");
  111. $(document.body).append('<span id="pContrainId"></span>');
  112. var Index = 0;
  113. $.each($("table"), function (index, item) {
  114. // 处理表格总宽度
  115. var ArrMaxLen = [];
  116. var TableWidth = 0;
  117. var TotalMaxLen = 0;
  118. var RuleFlag = true;
  119. $.each($(item).find("tr"), function (trIndex, trItem) {
  120. $.each($(trItem).find("td"), function (tdIndex, tdItem) {
  121. var tdtext = removeHtmlFunc($(tdItem).html());
  122. $("#pContrainId").text(tdtext);
  123. var tdWidthVal = $("#pContrainId").width();
  124. if (ArrMaxLen.length < tdIndex + 1) {
  125. if (trIndex != 0) {
  126. RuleFlag = false;
  127. }
  128. ArrMaxLen.push(0);
  129. }
  130. if (ArrMaxLen[tdIndex] < tdWidthVal) {
  131. TotalMaxLen += tdWidthVal - ArrMaxLen[tdIndex];
  132. ArrMaxLen[tdIndex] = tdWidthVal;
  133. }
  134. });
  135. });
  136. // 判断表格是否只有一行
  137. if ($(item).find("tr").length == 1 && $(item).find("tr").eq(0).find("td").length == 1) {
  138. $(item).find("tr").eq(0).find("td").eq(0).css("width", (ScreenWidth - 4 - GetPadVal()) + "px");
  139. $(item).css("width", (ScreenWidth - 4 - GetPadVal()) + "px");
  140. }
  141. else {
  142. if (TotalMaxLen < ScreenWidth) {
  143. var AddPx = (ScreenWidth - TotalMaxLen) / ArrMaxLen.length;
  144. AddPx = AddPx > 2 ? AddPx - 2 : AddPx;
  145. for (var i = 0; i < ArrMaxLen.length; i++) {
  146. ArrMaxLen[i] += AddPx;
  147. }
  148. }
  149. var OneFlag = false;
  150. for (var i = 0; i < ArrMaxLen.length; i++) {
  151. if (ArrMaxLen[i] != undefined && $(item).find("tr").eq(0).find("td").length > 1 && RuleFlag) {
  152. $(item).find("tr").eq(0).find("td").eq(i).css("width", ArrMaxLen[i] + "px");
  153. TableWidth += ArrMaxLen[i];
  154. }
  155. else if (ArrMaxLen[i] != undefined && $(item).find("tr").eq(0).find("td").length > 1 && !RuleFlag) {
  156. TableWidth += ArrMaxLen[i];
  157. var NotRuleWidth = 0;
  158. if (i == ArrMaxLen.length - 1) {
  159. NotRuleWidth = TableWidth / $(item).find("tr").eq(0).find("td").length;
  160. }
  161. $.each($(item).find("tr").eq(0).find("td"), function (tdIndex, tdItem) {
  162. $(tdItem).css("width", NotRuleWidth + "px");
  163. });
  164. }
  165. else if (ArrMaxLen[i] != undefined && $(item).find("tr").eq(0).find("td").length == 1) {
  166. OneFlag = true;
  167. TableWidth += ArrMaxLen[i];
  168. }
  169. }
  170. if (OneFlag) {
  171. $(item).find("tr").eq(0).find("td").eq(0).css("width", TableWidth + "px");
  172. }
  173. $(item).css("width", TableWidth + "px");
  174. }
  175. // 替换HTML
  176. var ChildHtmlStr = $(item).prop("outerHTML");
  177. var HtmlStr = "<div class='TableContainer TContain_" + Index + "'></div>";
  178. $(item).after(HtmlStr);
  179. $(item).remove();
  180. var JqStr = ".TContain_" + Index;
  181. $(JqStr).append(ChildHtmlStr);
  182. Index += 1;
  183. });
  184. $(document.body).css("width", ScreenWidth + "px");
  185. var BodyWidth = isNaN(parseFloat($(document).width())) ? 0 : (parseFloat($(document).width()) - GetPadVal()); // 界面宽度
  186. var Index = 0;
  187. $.each($("table"), function (index, item) {
  188. var TableWidth = isNaN(parseFloat($(item).width())) ? 0 : parseFloat($(item).width()); // 表格宽度
  189. // 替换HTML
  190. var JqStr = ".TContain_" + Index;
  191. $(JqStr).css("width", BodyWidth + "px");
  192. if (TableWidth > BodyWidth) {
  193. // 额外显示滚动条
  194. var SHtmlStr = "<div class='PSBar' style='width: " + BodyWidth + "px;'></div>";
  195. $(JqStr).after(SHtmlStr);
  196. var HiddenRate = BodyWidth / TableWidth; // 滚动条比率
  197. var HiddenWidth = BodyWidth - (TableWidth - BodyWidth) * HiddenRate; // 现滚动条大小
  198. var CSHtmlStr = "<div class='CSBar' style='width: " + HiddenWidth + "px;'></div>";
  199. $(JqStr).next().append(CSHtmlStr);
  200. }
  201. Index += 1;
  202. });
  203. $.each($(".container-table"), function (index, item) {
  204. $(item).css("width", BodyWidth + "px");
  205. });
  206. // 滚动条事件
  207. $(".TableContainer").on("touchstart", function () {
  208. pressTableFlag = true;
  209. }).on("touchmove", function () {
  210. var TableWidth = isNaN(parseFloat($(this).find("table").width())) ? 0 : parseFloat($(this).find("table").width()); // 表格宽度
  211. BodyWidth = isNaN(parseFloat($(document).width())) ? 0 : (parseFloat($(document).width() - GetPadVal())); // 界面宽度
  212. var HiddenRate = BodyWidth / TableWidth; // 滚动条比率
  213. var SLeftWdith = isNaN(parseFloat($(this)[0].scrollLeft)) ? 0 : parseFloat($(this)[0].scrollLeft);
  214. SLeftWdith *= HiddenRate;
  215. var NextClsName = $(this).next().attr("class");
  216. if (NextClsName == "PSBar") {
  217. $(this).next().find(".CSBar").css("left", SLeftWdith + "px");
  218. }
  219. });
  220. window.addEventListener("scroll", function (event) {
  221. var ClsName = event.target.className;
  222. if (ClsName == undefined) {
  223. return;
  224. }
  225. ClsName = ClsName.replace("TableContainer ", ".");
  226. var TableWidth = isNaN(parseFloat($(ClsName).find("table").width())) ? 0 : parseFloat($(ClsName).find("table").width()); // 表格宽度
  227. BodyWidth = isNaN(parseFloat($(document).width())) ? 0 : (parseFloat($(document).width() - GetPadVal())); // 界面宽度
  228. var HiddenRate = BodyWidth / TableWidth; // 滚动条比率
  229. var SLeftWdith = isNaN(parseFloat($(ClsName)[0].scrollLeft)) ? 0 : parseFloat($(ClsName)[0].scrollLeft);
  230. SLeftWdith *= HiddenRate;
  231. var NextClsName = $(ClsName).next().attr("class");
  232. if (NextClsName == "PSBar") {
  233. $(ClsName).next().find(".CSBar").css("left", SLeftWdith + "px");
  234. }
  235. }, true);
  236. $("#pContrainId").remove();
  237. };
  238. // 表格处理End
  239. // 判断是否在横线内
  240. var isGCFunc = function (NodeHandle) {
  241. var isFlag = false;
  242. var PClsName = $(NodeHandle).attr("class");
  243. var tagName = $(NodeHandle).prop("tagName");
  244. while (tagName != undefined && tagName != "BODY" && ((PClsName != undefined && PClsName.indexOf("underlineContent") == -1) || PClsName == undefined)) {
  245. NodeHandle = $(NodeHandle).parent();
  246. PClsName = $(NodeHandle).attr("class");
  247. tagName = $(NodeHandle).prop("tagName");
  248. }
  249. if (PClsName != undefined && PClsName.indexOf("underlineContent") > -1) {
  250. isFlag = true;
  251. }
  252. return isFlag;
  253. };
  254. // 处理高亮
  255. var dealGLShowFunc = function (NodeHandle) {
  256. if (styleWPSContrl.wordFlag) {
  257. $(NodeHandle).find(".wordStyle[showFlag='1']").css("color", "#db5d00");
  258. }
  259. else {
  260. $(NodeHandle).find(".wordStyle[showFlag='1'][uLFlag='1']").css("color", "#92D050");
  261. $(NodeHandle).find(".wordStyle[showFlag='1'][uLFlag='0']").css("color", "#000000");
  262. }
  263. //$.each($(NodeHandle).find(".wordStyle"), function (index, element) {
  264. // var showFlagS = $(element).attr("showFlag");
  265. // if (styleWPSContrl.wordFlag && showFlagS == "1") {
  266. // $(element).css("color", "#db5d00");
  267. // }
  268. // else if (showFlagS == "1") {
  269. // var uLFlag = $(element).attr("uLFlag");
  270. // if (uLFlag == "1") {
  271. // $(element).css("color", "#92D050");
  272. // }
  273. // else {
  274. // $(element).css("color", "#000000");
  275. // }
  276. // }
  277. //});
  278. $.each($(NodeHandle).find(".phraseStyle"), function (index, element) {
  279. var showFlagS = $(element).attr("showFlag");
  280. if (styleWPSContrl.phraseFlag && showFlagS == "1") {
  281. $(element).css("background-color", "#f2db8b");
  282. }
  283. else if (showFlagS == "1") {
  284. $(element).css("background-color", "#ffffff");
  285. }
  286. });
  287. $.each($(NodeHandle).find(".sentenceStyle"), function (index, element) {
  288. var showFlagS = $(element).attr("showFlag");
  289. if (styleWPSContrl.sentenceFlag && showFlagS == "1") {
  290. $(element).css("border-bottom", "2px solid #78ae43");
  291. }
  292. else if (showFlagS == "1") {
  293. $(element).css("border-bottom", "2px solid #ffffff");
  294. }
  295. });
  296. };
  297. // 处理显示或隐藏答案(shcode是否可点击1可点击;uLFlag判断是否存在横线内1表示在;showFlag是否显示1显示)
  298. var dealAnswerFunc = function (NodeHandle, OCFlag, ThProFlag) {
  299. if (OCFlag) {
  300. var uLFlag = $(NodeHandle).attr("uLFlag");
  301. if (uLFlag == "1") {
  302. var showFlagS = $(NodeHandle).attr("showFlag");
  303. if ((showFlagS == "0" && !ThProFlag) || (showFlagS == "1" && ThProFlag)) {
  304. $(NodeHandle).css("color", "#92D050").css("border-bottom", "1px solid #979797").css("background-color", "#transparent").attr("shcode", 0).attr("showFlag", "1");
  305. }
  306. else {
  307. $(NodeHandle).css("color", "#ffffff").css("border-bottom", "1px solid #979797").css("background-color", "#transparent").attr("shcode", 1).attr("showFlag", "0");
  308. }
  309. }
  310. else {
  311. $(NodeHandle).css("color", "#000000").css("border-bottom", "none").css("background-color", "transparent").attr("shcode", 0).attr("showFlag", "1");
  312. }
  313. $(NodeHandle).find(".wordStyle[uLFlag='0'],.phraseStyle[uLFlag='0'],.sentenceStyle[uLFlag='0'],u[uLFlag='0'],span[uLFlag='0']").css("color", "#000000").css("border-bottom", "none").css("background-color", "transparent").attr("shcode", 0).attr("showFlag", "1");
  314. if (ThProFlag) {
  315. $(NodeHandle).find(".wordStyle[uLFlag='1'][showFlag='1'],.phraseStyle[uLFlag='1'][showFlag='1'],.sentenceStyle[uLFlag='1'][showFlag='1'],u[uLFlag='1'][showFlag='1'],span[uLFlag='1'][showFlag='1']").css("color", "#000000").css("border-bottom", "none").css("background-color", "transparent").attr("shcode", 0).attr("showFlag", "1");
  316. $(NodeHandle).find(".wordStyle[uLFlag='1'][showFlag='0'],.phraseStyle[uLFlag='1'][showFlag='0'],.sentenceStyle[uLFlag='1'][showFlag='0'],u[uLFlag='1'][showFlag='0'],span[uLFlag='1'][showFlag='0']").css("color", "#ffffff").css("border-bottom", "1px solid #979797").css("background-color", "transparent").attr("shcode", 1).attr("showFlag", "0");
  317. }
  318. else {
  319. $(NodeHandle).find(".wordStyle[uLFlag='1'][showFlag='0'],.phraseStyle[uLFlag='1'][showFlag='0'],.sentenceStyle[uLFlag='1'][showFlag='0'],u[uLFlag='1'][showFlag='0'],span[uLFlag='1'][showFlag='0']").css("color", "#000000").css("border-bottom", "none").css("background-color", "transparent").attr("shcode", 0).attr("showFlag", "1");
  320. $(NodeHandle).find(".wordStyle[uLFlag='1'][showFlag='1'],.phraseStyle[uLFlag='1'][showFlag='1'],.sentenceStyle[uLFlag='1'][showFlag='1'],u[uLFlag='1'][showFlag='1'],span[uLFlag='1'][showFlag='1']").css("color", "#ffffff").css("border-bottom", "1px solid #979797").css("background-color", "transparent").attr("shcode", 1).attr("showFlag", "0");
  321. }
  322. //$.each($(NodeHandle).find(".wordStyle,.phraseStyle,.sentenceStyle,u,span"), function (index, element) {
  323. // uLFlag = $(element).attr("uLFlag");
  324. // if (uLFlag == "1") {
  325. // var showFlagS = $(element).attr("showFlag");
  326. // if ((showFlagS == "0" && !ThProFlag) || (showFlagS == "1" && ThProFlag)) {
  327. // $(element).css("color", "#92D050").css("border-bottom", "1px solid #979797").css("background-color", "transparent").attr("shcode", 0).attr("showFlag", "1");
  328. // }
  329. // else {
  330. // $(element).css("color", "#ffffff").css("border-bottom", "1px solid #979797").css("background-color", "transparent").attr("shcode", 1).attr("showFlag", "0");
  331. // }
  332. // }
  333. // else {
  334. // $(element).css("color", "#000000").css("border-bottom", "none").css("background-color", "transparent").attr("shcode", 0).attr("showFlag", "1");
  335. // }
  336. //});
  337. // 处理高亮
  338. dealGLShowFunc(NodeHandle);
  339. }
  340. else {
  341. var uLFlag = $(NodeHandle).attr("uLFlag");
  342. if (uLFlag == "1") {
  343. $(NodeHandle).css("color", "#ffffff").css("border-bottom", "1px solid #979797").css("background-color", "#ffffff").attr("shcode", 1).attr("showFlag", "0");
  344. }
  345. else {
  346. $(NodeHandle).css("color", "#ffffff").css("border-bottom", "1px solid #979797").css("background-color", "#ffffff").attr("shcode", 0).attr("showFlag", "0");
  347. }
  348. $.each($(NodeHandle).find(".wordStyle,.phraseStyle,.sentenceStyle,u,span"), function (index, element) {
  349. uLFlag = $(element).attr("uLFlag");
  350. if (uLFlag == "1") {
  351. $(element).css("color", "#ffffff").css("border-bottom", "1px solid #979797").css("background-color", "#ffffff").attr("shcode", 1).attr("showFlag", "0");
  352. }
  353. else {
  354. $(element).css("color", "#ffffff").css("border-bottom", "1px solid #979797").css("background-color", "#ffffff").attr("shcode", 0).attr("showFlag", "0");
  355. }
  356. });
  357. }
  358. var underlineContentText = $(NodeHandle).text(); // 获取文本内容
  359. if (underlineContentText != undefined && underlineContentText.indexOf("√") > -1) {
  360. if (OCFlag) {
  361. $(NodeHandle).parent().find(".checkbox").find("input").prop('checked', true);
  362. }
  363. else {
  364. $(NodeHandle).parent().find(".checkbox").find("input").prop('checked', false);
  365. }
  366. }
  367. };
  368. //显示、隐藏答案
  369. function showHideAnswer(flag) {
  370. if (flag) {
  371. $(".yaoshi").attr("src", PicInfo.yaoshiShowImgUrl);
  372. $.each($(".underlineContent"), function (index, item) {
  373. dealAnswerFunc(item, true, false);
  374. });
  375. }
  376. else {
  377. $(".yaoshi").attr("src", PicInfo.yaoshiHideImgUrl);
  378. $.each($(".underlineContent,.underlineContent.no-answer"), function (index, item) {
  379. dealAnswerFunc(item, false, false);
  380. });
  381. }
  382. }
  383. ///显示、隐藏钥匙及答案 isShowYX:显示和隐藏钥匙,isShowAS:显示和隐藏答案
  384. function showHideAnswerEx(isShowYX, isShowAS) {
  385. if (isShowYX) {
  386. $(".yaoshi").show();
  387. }
  388. else {
  389. $(".yaoshi").hide();
  390. }
  391. if (isShowAS) {
  392. $.each($(".underlineContent"), function (index, item) {
  393. dealAnswerFunc(item, true, false);
  394. });
  395. $(".yaoshi").attr("data-status", "1");
  396. $(".yaoshi").attr("src", PicInfo.yaoshiShowImgUrl);
  397. }
  398. else {
  399. $.each($(".underlineContent,.underlineContent.no-answer"), function (index, item) {
  400. dealAnswerFunc(item, false, false);
  401. });
  402. $(".yaoshi").attr("data-status", "0");
  403. $(".yaoshi").attr("src", PicInfo.yaoshiHideImgUrl);
  404. }
  405. }
  406. //页面加载完,原文 绑定事件
  407. function bindEventTeaOrignalYS() {
  408. var bodyWidth = $(document.body).width();
  409. //处理答题点
  410. $.each($(".yaoshi"), function (index, item) {
  411. $(item).attr('answer-id', index);
  412. });
  413. //给音频绑定一个ID
  414. $.each($(".audioImg"), function (index, item) {
  415. $(item).attr("audiourl", "");
  416. $(item).attr('audio-id', index);
  417. });
  418. //给视频图标处理
  419. $.each($(".videoImg"), function (index, item) {
  420. $(item).attr("audiourl", "");
  421. });
  422. //给口语图标处理
  423. $.each($(".oralLanguageImg"), function (index, item) {
  424. $(item).attr("audiourl", "");
  425. });
  426. //处理参考答案
  427. $.each($(".underlineContent"), function (index, item) {
  428. $(item).attr("answer-anstext", $(item).html());
  429. });
  430. //去除多余的U空标签
  431. $.each($("u"), function (index, item) {
  432. var text = $(item).text();
  433. text = text.replace(/\s+/g, "");
  434. if (text == "") {
  435. $(item).remove();
  436. }
  437. });
  438. //处理暂无参考答案
  439. $.each($(".yaoshi"), function (index, item) {
  440. var parent = $(item).parent();
  441. var prev = $(item).nextUntil(".yaoshi").find(".underlineContent");
  442. if (prev.length == 0) {
  443. var spanHtml = document.createElement("span");
  444. //添加子节点
  445. var uHtml = document.createElement("u");
  446. uHtml.className = "underlineContent no-answer";
  447. uHtml.innerText = "暂无参考答案";
  448. //处理改错题及勾选题
  449. if ($(parent)[0].tagName == 'P') {
  450. if ($(parent).hasClass('correntQue') || $(parent).hasClass('boxQue')) {
  451. uHtml.innerHTML = "&nbsp;&nbsp;&nbsp;";
  452. //改错题,要随机下划线长度
  453. if ($(parent).hasClass('correntQue')) {
  454. uHtml.style = "width:" + randomNum(220, 300) + "px;";
  455. }
  456. uHtml.setAttribute("answer-anstext", "");
  457. }
  458. }
  459. $(spanHtml).html(uHtml.outerHTML);
  460. $(item).after(spanHtml);
  461. }
  462. });
  463. //处理表格宽度
  464. AdjustTableFunc();
  465. //一题多空的答题点标注
  466. var checkId = 0;
  467. var headid = -1;
  468. var groupId = -1;
  469. $(".multipleStart").each(function (i, item) {
  470. var $startNode = $(item);
  471. $.merge($(item).nextUntil(".multipleEnd").filter("[class*='group']"), $(item).nextUntil(".multipleEnd").find("[class*='group']")).each(function (index, item) {
  472. checkId = $(item).find('.yaoshi').attr("answer-id");
  473. var gid = $(item).attr('class').replace(/.*group(\d+).*/g, "$1");
  474. if (index == 0 || groupId != gid) {
  475. groupId = gid;
  476. headid = checkId;
  477. }
  478. $(item).find('.yaoshi').attr('parent-anid', headid);
  479. });
  480. });
  481. //点击喇叭事件,音频播放
  482. $(".audioImg").on("click", function () {
  483. audioPlayClick(this);
  484. });
  485. //显示/隐藏习题答案
  486. $(".yaoshi").on("click", function () {
  487. var parentAnid = $(this).attr("parent-anid");
  488. var curDisplay = $(this).nextUntil(".yaoshi").find(".underlineContent").eq(0).css("display");
  489. if (curDisplay == "undefined" || curDisplay == undefined) return;
  490. if (curDisplay == "none" || $(this).attr("data-status") == "0") {
  491. if (parentAnid != undefined) {
  492. $.each($(this).parents().find(".yaoshi[parent-anid='" + parentAnid + "']"), function (index, item) {
  493. $(item).attr("data-status", "1");
  494. $(item).attr("src", PicInfo.yaoshiShowImgUrl);
  495. $.each($(item).parent().find(".underlineContent"), function (cIndex, cItem) {
  496. dealAnswerFunc(cItem, true, false);
  497. });
  498. });
  499. }
  500. else {
  501. $(this).attr("data-status", "1");
  502. $(this).attr("src", PicInfo.yaoshiShowImgUrl);
  503. $.each($(this).nextUntil(".yaoshi").find(".underlineContent"), function (index, item) {
  504. dealAnswerFunc(item, true, false);
  505. });
  506. }
  507. //不再存在已隐藏的钥匙,移动端回调
  508. if ($(".yaoshi[data-status='0']").length == 0) {
  509. //添加回调
  510. console.log("全部显示了");
  511. onClickKeyShow();
  512. }
  513. }
  514. else {
  515. if (parentAnid != undefined) {
  516. $.each($(this).parents().find(".yaoshi[parent-anid='" + parentAnid + "']"), function (index, item) {
  517. $(item).attr("data-status", "0");
  518. $(item).attr("src", PicInfo.yaoshiHideImgUrl);
  519. $.each($(item).parent().find(".underlineContent"), function (cIndex, cItem) {
  520. dealAnswerFunc(cItem, false, false);
  521. });
  522. });
  523. }
  524. else {
  525. $(this).attr("data-status", "0");
  526. $(this).attr("src", PicInfo.yaoshiHideImgUrl);
  527. $.each($(this).nextUntil(".yaoshi").find(".underlineContent"), function (index, item) {
  528. dealAnswerFunc(item, false, false);
  529. });
  530. }
  531. //添加回调
  532. onClickKeyHide();
  533. }
  534. });
  535. //点击播放事件,视频播放
  536. $(".videoImg").on("click", function () {
  537. var curHtml = $(this).parent().find(".videoUrl").html();
  538. var curAlt = $(this).attr("alt");//播放视频地址
  539. playVisiableAudioCallBack(2, $(this).attr("alt"));
  540. });
  541. }
  542. //页面加载完,课件 绑定事件
  543. function bindEventYS() {
  544. var bodyWidth = $(document.body).width();
  545. //不存在underline 属性下有内容,所以全部隐藏,若有就是源头数据有问题
  546. $('.underline').css("display", "none");
  547. $.each($(".yaoshi"), function (index, item) {
  548. $(item).attr('answer-id', index);
  549. });
  550. //给音频绑定一个ID
  551. $.each($(".audioImg"), function (index, item) {
  552. $(item).attr("audiourl", "");
  553. $(item).attr('audio-id', index);
  554. });
  555. //给视频图标处理
  556. $.each($(".videoImg"), function (index, item) {
  557. $(item).attr("audiourl", "");
  558. });
  559. //给口语图标处理
  560. $.each($(".oralLanguageImg"), function (index, item) {
  561. $(item).attr("audiourl", "");
  562. });
  563. //去除多余的U空标签
  564. $.each($("u"), function (index, item) {
  565. var text = $(item).text();
  566. text = text.replace(/\s+/g, "");
  567. if (text == "") {
  568. $(item).remove();
  569. }
  570. });
  571. //处理暂无参考答案
  572. $.each($(".yaoshi"), function (index, item) {
  573. var parent = $(item).parent();
  574. var prev = $(item).nextAll(".underlineContent");
  575. if (prev.length == 0) {
  576. var uHtml = document.createElement("u");
  577. uHtml.className = "underlineContent no-answer";
  578. uHtml.innerText = "暂无参考答案";
  579. //处理改错题及勾选题
  580. if ($(parent)[0].tagName == 'P') {
  581. if ($(parent).hasClass('correntQue') || $(parent).hasClass('boxQue')) {
  582. uHtml.innerHTML = "&nbsp;&nbsp;&nbsp;";
  583. //改错题,要随机下划线长度
  584. if ($(parent).hasClass('correntQue')) {
  585. uHtml.style = "width:" + randomNum(220, 300) + "px;";
  586. }
  587. uHtml.setAttribute("answer-anstext", "");
  588. }
  589. }
  590. $(item).after(uHtml);
  591. }
  592. });
  593. //处理表格宽度
  594. AdjustTableFunc();
  595. //一题多空的答题点标注
  596. var checkId = 0;
  597. var headid = -1;
  598. var groupId = -1;
  599. $(".multipleStart").each(function (i, item) {
  600. var $startNode = $(item);
  601. $.merge($(item).nextUntil(".multipleEnd").filter("[class*='group']"), $(item).nextUntil(".multipleEnd").find("[class*='group']")).each(function (index, item) {
  602. checkId = $(item).find('.yaoshi').attr("answer-id");
  603. var gid = $(item).attr('class').replace(/.*group(\d+).*/g, "$1");
  604. if (index == 0 || groupId != gid) {
  605. groupId = gid;
  606. headid = checkId;
  607. }
  608. $(item).find('.yaoshi').attr('parent-anid', headid);
  609. });
  610. });
  611. //显示/隐藏习题答案
  612. $(".yaoshi").on("click", function () {
  613. var parentAnid = $(this).attr("parent-anid");
  614. if ($(this).attr("data-status") == "0") {
  615. // 显示处理
  616. if (parentAnid != undefined) {
  617. $.each($(this).parents().find(".yaoshi[parent-anid='" + parentAnid + "']"), function (index, fItem) {
  618. $(fItem).attr("data-status", "1");
  619. $(fItem).attr("src", PicInfo.yaoshiShowImgUrl);
  620. $.each($(fItem).parent().find(".underlineContent"), function (index, item) {
  621. dealAnswerFunc(item, true, false);
  622. });
  623. });
  624. }
  625. else {
  626. $(this).attr("data-status", "1");
  627. $(this).attr("src", PicInfo.yaoshiShowImgUrl);
  628. //$(this).nextUntil(".yaoshi").filter(".underlineContent").css("color", "#92D050");
  629. $.each($(this).nextUntil(".yaoshi").filter(".underlineContent"), function (index, item) {
  630. dealAnswerFunc(item, true, false);
  631. });
  632. }
  633. //不再存在已隐藏的钥匙,移动端回调
  634. if ($(".yaoshi[data-status='0']").length == 0) {
  635. //添加回调
  636. onClickKeyShow();
  637. }
  638. }
  639. else {
  640. // 隐藏处理
  641. if (parentAnid != undefined) {
  642. $.each($(this).parents().find(".yaoshi[parent-anid='" + parentAnid + "']"), function (index, fItem) {
  643. $(fItem).attr("data-status", "0");
  644. $(fItem).attr("src", PicInfo.yaoshiHideImgUrl);
  645. $.each($(fItem).parent().find(".underlineContent"), function (index, item) {
  646. dealAnswerFunc(item, false, false);
  647. });
  648. });
  649. }
  650. else {
  651. $(this).attr("data-status", "0");
  652. $(this).attr("src", PicInfo.yaoshiHideImgUrl);
  653. //$(this).nextUntil(".yaoshi").filter(".underlineContent").css("color", "#ffffff");
  654. $.each($(this).nextUntil(".yaoshi").filter(".underlineContent"), function (index, item) {
  655. dealAnswerFunc(item, false, false);
  656. });
  657. }
  658. //添加回调
  659. onClickKeyHide();
  660. }
  661. });
  662. //点击喇叭事件,音频播放
  663. $(".audioImg").on("click", function () {
  664. audioPlayClick(this);
  665. });
  666. //点击播放事件,视频播放
  667. $(".videoImg").on("click", function () {
  668. $(this).attr("audiourl", "");
  669. var curHtml = $(this).parent().find(".videoUrl").html();
  670. var curAlt = $(this).attr("alt");//播放视频地址
  671. playVisiableAudioCallBack(2, $(this).attr("alt"));
  672. });
  673. }
  674. // 移动端使用,true:表示点击表格且正在移动,需阻止模块切换
  675. function getPressFlag() {
  676. return pressTableFlag;
  677. }
  678. // 滚动条渲染
  679. // 设置离焦事件
  680. function resetPressFlag() {
  681. pressTableFlag = false;
  682. }
  683. //学生端 处理作答区域
  684. var answerData = new Array();
  685. function handleAnswerRange() {
  686. // 隐藏答案划线
  687. $(".underlineContentShow").attr("data-status", "0");
  688. //规范文本格式
  689. var answerId = "";
  690. var tempJson = new Array();
  691. //先处理一题多空的情况,获取两个之间的答题点
  692. $(".multipleStart").each(function (i, item) {
  693. $.merge($(item).nextUntil(".multipleEnd").filter("[class*='group']"), $(item).nextUntil(".multipleEnd").find("[class*='group']")).each(function (index, item) {
  694. var checkId = $(item).find('.yaoshi').attr("answer-id");
  695. var headid = $(item).find('.yaoshi').attr("parent-anid");
  696. var ischecked = $(item).find(".underlineContent").text().indexOf("√") > -1;
  697. var answerText = ischecked ? "√" : "";
  698. //勾选题
  699. if ($(item).hasClass('boxQue')) {
  700. $(item).find('.yaoshi').after("<div class='checkbox' answer-id='" + checkId + "' parent-anid='" + headid + "' answer-isky='2' answer-anstext=" + answerText + "><input id=" + checkId + " type='checkbox'><label for=" + checkId + "></label></div>");
  701. //$(item).find('input').prop('checked', ischecked);
  702. $(item).find('.underlineContent').hide();
  703. }
  704. //点击事件
  705. $(item).find('input').bind("click", function () {
  706. var curObj = new Object();
  707. curObj.Id = $(this).parent().attr("answer-id");//答题点ID
  708. curObj.pId = $(this).parent().attr("parent-anid");//答题点ID
  709. curObj.IsKY = $(this).parent().attr("answer-isky");//是否是口语试题,0-不是口语题,1-是口语题,2-打勾题
  710. //curObj.Text = $(this).parent().attr("answer-text");//用户作答内容
  711. curObj.Score = $(this).parent().attr("answer-score");//作答评分
  712. curObj.AnsText = $(this).parent().attr("answer-anstext");//参考答案
  713. curObj.Comment = $(this).parent().attr("answer-comment");//评语
  714. curObj.pId = curObj.pId ? curObj.pId : curObj.Id;//组ID
  715. curObj.Text = $(this).prop("checked") ? "√" : "";//用户作答内容
  716. $(this).parent().attr("answer-text", curObj.Text);//用户作答内容
  717. $(".checkbox").removeClass("select-answer");
  718. $(".answer-body").removeClass("select-answer");
  719. $(this).parent().addClass("select-answer");
  720. //已作答,弹出作答答案
  721. if ($(this).parent().data("ans-status") == "1") {
  722. //移动端添加外部处理
  723. onClickAnswerPoint(JSON.stringify(curObj));
  724. }
  725. else {
  726. //移动端添加外部处理,弹出作答操作
  727. onClickAnswerPoint(JSON.stringify(curObj));
  728. }
  729. });
  730. //删除钥匙节点
  731. $(item).find('.yaoshi').hide();
  732. });
  733. });
  734. //所有underline不做处理
  735. $.each($(".yaoshi").nextUntil(".yaoshi").filter(".underline"), function (index, item) {
  736. tempId = $(item).prevAll(".yaoshi").attr("answer-id");
  737. //记录上一次的ID
  738. if (tempId == undefined) {
  739. tempId = answerId;
  740. }
  741. else {
  742. answerId = tempId;
  743. }
  744. var prev = $(item).prev();
  745. if ((prev.length == 0 || $(prev).attr("class") != "tag-span") && $(prev).attr("class") != "underlineContent") {
  746. if ($("span[answer-id='" + tempId + "']").length == 0) {
  747. $(item).prop("outerHTML", "<span answer-id='" + tempId + "' class='tag-span' answer-isky='0'>_</span>");
  748. }
  749. }
  750. $(item).remove();
  751. });
  752. //提取参考答案并规范文本格式
  753. answerId = "";
  754. $.each($(".yaoshi").nextUntil(".yaoshi").filter(".underlineContent"), function (index, item) {
  755. var info = new Object();
  756. info.Id = $(item).prevAll(".yaoshi").attr("answer-id");
  757. info.pId = $(item).prevAll(".yaoshi").attr("parent-anid");
  758. //记录上一次的ID
  759. if (info.Id == undefined) {
  760. info.Id = answerId;
  761. }
  762. else {
  763. answerId = info.Id;
  764. }
  765. if (info.pId == undefined) {
  766. info.pId = answerId;
  767. }
  768. info.AnsText = $(item).attr("answer-anstext");
  769. if (info.AnsText == undefined) {
  770. info.AnsText = $(item).text();
  771. }
  772. tempJson.push(info);
  773. var prev = $(item).prev();
  774. if (!$(prev).hasClass("checkbox")) {
  775. if (prev.length == 0 || $(prev).attr("class") != "tag-span") {
  776. //替换答案
  777. $(item).prop("outerHTML", "<span answer-id='" + info.Id + "' class='tag-span' answer-isky='0'>_</span>");
  778. }
  779. else {
  780. $(item).remove();
  781. }
  782. }
  783. });
  784. $.each($(".yaoshi"), function (index, item) {
  785. var Id = $(item).attr("answer-id");
  786. var prev = $(item).next();
  787. if (!$(prev).hasClass("checkbox")) {
  788. if (prev.length == 0 || $(prev).attr("class") != "tag-span") {
  789. if ($("span[answer-id='" + Id + "']").length == 0) {
  790. var uHtml = document.createElement("span");
  791. uHtml.className = "tag-span";
  792. uHtml.innerText = "_";
  793. uHtml.setAttribute("answer-id", Id);
  794. $(item).after(uHtml);
  795. }
  796. }
  797. }
  798. });
  799. //处理口语试题
  800. $.each($(".oralLanguage").nextUntil(".oralLanguageDone"), function (num, part) {
  801. if (part.tagName != "p") {
  802. $.each($(part).find(".tag-span"), function (index, item) {
  803. $(item).attr("answer-isky", "1");
  804. });
  805. }
  806. else {
  807. if ($(part).hasClass("underlinePart")) {
  808. $.each($(part).find(".tag-span"), function (index, item) {
  809. $(item).attr("answer-isky", "1");
  810. });
  811. }
  812. }
  813. });
  814. //合并参考答案数据
  815. var tempid = "";
  816. var temppid = "";
  817. var temptext = "";
  818. for (var i = 0; i < tempJson.length; i++) {
  819. if (tempid == tempJson[i].Id) {
  820. temptext = temptext + tempJson[i].AnsText;
  821. }
  822. else {
  823. if (tempid != "") {
  824. var info = new Object();
  825. info.Id = tempid;
  826. info.pId = temppid;
  827. info.AnsText = temptext;
  828. answerData.push(info);
  829. //重置
  830. tempid = "";
  831. temptext = "";
  832. }
  833. tempid = tempJson[i].Id;
  834. temppid = tempJson[i].pId;
  835. temptext = tempJson[i].AnsText;
  836. //最后一个存入
  837. if (i == tempJson.length - 1) {
  838. var info = new Object();
  839. info.Id = tempid;
  840. info.pId = temppid;
  841. info.AnsText = temptext;
  842. answerData.push(info);
  843. }
  844. }
  845. }
  846. //补全答题点
  847. var Num = 0;
  848. if (answerData.length > 0) {
  849. //Num = Number.parseInt(answerData[answerData.length - 1].Id);
  850. Num = Number.parseInt($(".yaoshi:last").attr('answer-id'));
  851. for (var i = 0; i < Num + 1; i++) {
  852. if (i < answerData.length) {
  853. var index = Number(answerData[i].Id) - i;
  854. for (var j = 0; j < index; j++) {
  855. var info = new Object();
  856. info.Id = (i + j).toString();
  857. info.pId = info.Id;
  858. info.AnsText = "";
  859. answerData.splice(i, 0, info);
  860. }
  861. }
  862. else {
  863. var info = new Object();
  864. info.Id = (i).toString();
  865. info.pId = info.Id;
  866. info.AnsText = "";
  867. answerData.splice(i, 0, info);
  868. }
  869. }
  870. }
  871. //添加答题点的点击UI及交互
  872. $.each($(".tag-span"), function (index, item) {
  873. var answerText = "";
  874. var parentId = "";
  875. var isky = $(item).attr('answer-isky');
  876. var answerid = $(item).attr('answer-id');
  877. for (var i = 0; i < answerData.length; i++) {
  878. if (answerid == answerData[i].Id) {
  879. parentId = answerData[i].pId;
  880. answerText = answerData[i].AnsText;
  881. break;
  882. }
  883. }
  884. $(item).prop("outerHTML", "<div class='answer-body' answer-id='" + answerid + "' parent-anid='" + parentId + "' answer-anstext='" + answerText + "' answer-isky='" + isky + "' answer-showanswer='0'><div class='answer-audio-range'><img src='" + PicInfo.recordPlayImgUrl + "'/><span class='answer-audio-text'>作答音频</span></div><div class='answer-point-range'><img src='" + PicInfo.answerPointImgUrl + "'/><span class='answer-point-text'>答题点</span></div><buttom class='answer-text'></buttom></div>");
  885. //删除钥匙节点
  886. var prev = $("img[answer-id='" + answerid + "']");
  887. if (prev.length > 0) {
  888. $(prev).remove();
  889. }
  890. });
  891. //添加点击事件
  892. $(".answer-body").on("click", function () {
  893. var curObj = new Object();
  894. curObj.Id = $(this).attr("answer-id");//答题点ID
  895. curObj.pId = $(this).attr("parent-anid");//答题点ID
  896. curObj.IsKY = $(this).attr("answer-isky");//是否是口语试题,0-不是口语题,1-是口语题
  897. curObj.Text = $(this).attr("answer-text");//用户作答内容
  898. curObj.Score = $(this).attr("answer-score");//作答评分
  899. curObj.AnsText = $(this).attr("answer-anstext");//参考答案
  900. curObj.Comment = $(this).attr("answer-comment");//评语
  901. curObj.pId = curObj.pId ? curObj.pId : curObj.Id;//组ID
  902. $(".checkbox").removeClass("select-answer");
  903. $(".answer-body").removeClass("select-answer");
  904. $(this).addClass("select-answer");
  905. //已作答,弹出作答答案
  906. if ($(this).data("ans-status") == "1") {
  907. //移动端添加外部处理
  908. onClickAnswerPoint(JSON.stringify(curObj));
  909. }
  910. else {
  911. //移动端添加外部处理,弹出作答操作
  912. onClickAnswerPoint(JSON.stringify(curObj));
  913. }
  914. });
  915. //去除多余的空格横线
  916. $.each($(".underline"), function (index, item) {
  917. var text = $(item).text();
  918. text = text.replace(/\s+/g, "");
  919. if (text == "") {
  920. $(item).remove();
  921. }
  922. });
  923. //删除所有钥匙节点
  924. $("img[class=yaoshi]").remove();
  925. //console.log(JSON.stringify(answerData));
  926. return answerData;
  927. }
  928. //接收学生的作答
  929. function reviewAnswer(answerJson) {
  930. if (answerJson != "" && answerJson) {
  931. var answerObj = JSON.parse(answerJson);
  932. var selectElement = $(".answer-body[answer-id='" + answerObj.Id + "']");
  933. var audioElement = $(selectElement).children(".answer-audio-range").children("img").eq(0);
  934. answerObj.IsKY = $(selectElement).attr("answer-isky");//是否是口语试题,0-不是口语题,1-是口语题
  935. //是否为音频作答
  936. if ((answerObj.Type == 3 || answerObj.Type == 4) && answerObj.AudioUrl != "") {
  937. $(selectElement).children(".answer-point-range").hide();
  938. $(selectElement).children(".answer-audio-range").css("display", "inline-block");
  939. $(selectElement).children(".answer-audio-range").children("span").text("作答音频(" + answerObj.AudioLength + "s)");
  940. //填充作答内容
  941. $(selectElement).attr("answer-text", answerObj.Text);
  942. if (answerObj.Text != "") {
  943. answerObj.Text = "(" + answerObj.Text + ")";
  944. $(selectElement).children(".answer-text").show();
  945. $(selectElement).children(".answer-text").text(answerObj.Text);
  946. }
  947. //是否之前存在作答音频
  948. $(selectElement).attr("answer-url", answerObj.AudioUrl);
  949. $(audioElement).attr("src", PicInfo.recordPlayImgUrl);
  950. $(selectElement).children(".answer-audio-range").attr("play-status", "0");
  951. //独立绑定事件
  952. $(audioElement).on("click", function () {
  953. recordAudioClick(this, answerObj.Id, answerObj.AudioUrl);
  954. });
  955. $(selectElement).children(".answer-audio-range").children("span").on("click", function () {
  956. $(".answer-body").removeClass("select-answer");
  957. $(selectElement).addClass("select-answer");
  958. onClickAnswerPoint(JSON.stringify(answerObj));
  959. });
  960. }
  961. else {
  962. $(selectElement).attr("answer-text", answerObj.Text);//填充作答内容
  963. $(selectElement).children(".answer-audio-range").hide();
  964. if (answerObj.Text != "") {
  965. $(selectElement).children(".answer-text").show();
  966. $(selectElement).children(".answer-point-range").hide();
  967. $(selectElement).children(".answer-text").text(answerObj.Text);
  968. }
  969. else {
  970. $(selectElement).children(".answer-text").hide();
  971. $(selectElement).children(".answer-point-range").show();
  972. }
  973. }
  974. }
  975. }
  976. //提交,获取所有作答答案及参考答案
  977. function getAllAnswer() {
  978. //处理作答
  979. $.each($(".answer-body"), function (index, item) {
  980. var answerid = $(item).attr("answer-id");
  981. var parentid = $(item).attr("parent-anid");
  982. var mytext = $(item).children(".answer-text").text();
  983. var curDisplay = $(item).children(".answer-audio-range").css("display");
  984. if (mytext == "" && curDisplay == "none") {
  985. mytext = "未作答";
  986. if (parentid != answerid) {
  987. mytext = "&nbsp;&nbsp;&nbsp;&nbsp;";
  988. $(item).children(".answer-text").html(mytext);
  989. $(item).children(".answer-text").addClass("noanswer-border");
  990. }
  991. else {
  992. $(item).children(".answer-text").text(mytext);
  993. $(item).children(".answer-text").addClass("no-answer");
  994. }
  995. $(item).children(".answer-point-range").hide();
  996. $(item).children(".answer-text").show();
  997. }
  998. });
  999. $(".answer-body").removeClass("select-answer");//移除样式
  1000. $(".answer-body").unbind("click");//取消点击绑定事件
  1001. $(".answer-body").children(".answer-audio-range").children("span").unbind("click");//取消点击绑定事件
  1002. //打勾题的还原
  1003. $.each($(".checkbox"), function (num, item) {
  1004. var answerid = $(item).attr("answer-id");
  1005. var parentid = $(item).attr("parent-anid");
  1006. //提交直接还原作答现场
  1007. var mytext = $(item).attr("answer-text");//我的答案
  1008. var ischecked = mytext.indexOf("√") > -1;
  1009. var answerText = $(item).attr("answer-anstext");//参考答案
  1010. mytext = mytext == "" ? "__" : mytext;
  1011. $(item).prop("outerHTML", "<div class='answer-body' answer-id='" + answerid + "' parent-anid='" + parentid + "' answer-anstext='" + answerText + "' answer-isky='2'><div class='answer-audio-range'><img src='" + PicInfo.recordPlayImgUrl + "'/><span class='answer-audio-text'>作答音频</span></div><div class='answer-point-range' style='display:none;'><img src='" + PicInfo.answerPointImgUrl + "'/><span class='answer-point-text'>答题点</span></div><buttom class='answer-text' style='display:block;'>" + mytext + "</buttom></div>");
  1012. });
  1013. //console.log(JSON.stringify(answerData));
  1014. return answerData;
  1015. }
  1016. //回填所有答案,answerJson:所有作答及参考答案List,statusType:0-可作答,1-已提交,2-查看评阅
  1017. function backupAllAnswer(answerJson, statusType) {
  1018. if (answerJson != "" && answerJson) {
  1019. var answerList = JSON.parse(answerJson);
  1020. $.each($(".answer-body"), function (num, item) {
  1021. //查找
  1022. var index = 0;
  1023. var answerid = $(item).attr("answer-id");
  1024. var parentid = $(item).attr("parent-anid");
  1025. for (var i = 0; i < answerList.length; i++) {
  1026. if (answerid == answerList[i].Id) {
  1027. index = i;
  1028. break;
  1029. }
  1030. }
  1031. //提交直接还原作答现场
  1032. var mytext = answerList[index].Text;//我的答案
  1033. answerList[index].IsKY = $(item).attr("answer-isky");//是否是口语试题,0-不是口语题,1-是口语题
  1034. //添加音频控制
  1035. var hasAudio = false;
  1036. var audioElement = $(item).children(".answer-audio-range").children("img").eq(0);
  1037. if ((answerList[index].Type == 3 || answerList[index].Type == 4) && answerList[index].AudioUrl != "") {
  1038. hasAudio = true;
  1039. $(item).children(".answer-point-range").hide();
  1040. $(item).children(".answer-audio-range").css("display", "inline-block");
  1041. $(item).children(".answer-audio-range").children("span").text("作答音频(" + answerList[index].AudioLength + "s)");
  1042. //填充作答内容
  1043. $(item).attr("answer-text", mytext);
  1044. if (mytext != "") {
  1045. mytext = "(" + mytext + ")";
  1046. $(item).children(".answer-text").show();
  1047. $(item).children(".answer-text").text(mytext);
  1048. }
  1049. //音频节点
  1050. $(audioElement).attr("src", PicInfo.recordPlayImgUrl);
  1051. $(item).attr("answer-url", answerList[index].AudioUrl);
  1052. $(item).children(".answer-audio-range").attr("play-status", "0");
  1053. //独立绑定事件
  1054. $(audioElement).on("click", function () {
  1055. recordAudioClick(this, answerList[index].Id, answerList[index].AudioUrl);
  1056. });
  1057. }
  1058. //可作答状态,作答还原
  1059. if (statusType == 0) {
  1060. //已作答过,还原作答,增加作答后的UI节点
  1061. if ((answerList[index].Type == 3 || answerList[index].Type == 4) && answerList[index].AudioUrl != "") {
  1062. $(item).children(".answer-audio-range").children("span").on("click", function () {
  1063. $(".answer-body").removeClass("select-answer");
  1064. $(item).addClass("select-answer");
  1065. onClickAnswerPoint(JSON.stringify(answerList[index]));
  1066. });
  1067. }
  1068. else {
  1069. $(item).attr("answer-text", mytext);//填充作答内容
  1070. if (mytext != "") {
  1071. $(item).children(".answer-text").show();
  1072. $(item).children(".answer-point-range").hide();
  1073. $(item).children(".answer-text").text(mytext);
  1074. }
  1075. }
  1076. }
  1077. //已提交,作答还原
  1078. if (statusType == 1) {
  1079. //取消点击绑定事件
  1080. $(item).unbind('click');
  1081. //填充作答内容
  1082. $(item).attr("answer-text", mytext);
  1083. if (mytext == "" && !hasAudio) {
  1084. mytext = "未作答";
  1085. if (parentid != answerid) {
  1086. mytext = "&nbsp;&nbsp;&nbsp;&nbsp;";
  1087. $(item).children(".answer-text").html(mytext);
  1088. $(item).children(".answer-text").addClass("noanswer-border");
  1089. }
  1090. else {
  1091. $(item).children(".answer-text").text(mytext);
  1092. $(item).children(".answer-text").addClass("no-answer");
  1093. }
  1094. $(item).children(".answer-text").show();
  1095. }
  1096. else if (mytext == "" && hasAudio) {
  1097. $(item).children(".answer-text").hide();
  1098. }
  1099. else {
  1100. $(item).children(".answer-text").show();
  1101. $(item).children(".answer-text").text(mytext);
  1102. }
  1103. $(item).children(".answer-point-range").hide();
  1104. }
  1105. //已评阅,查看评阅详情
  1106. if (statusType == 2) {
  1107. //添加音频控制
  1108. if ((answerList[index].Type == 3 || answerList[index].Type == 4) && answerList[index].AudioUrl != "") {
  1109. //独立绑定事件
  1110. $(item).children(".answer-audio-range").children("span").on("click", function () {
  1111. $(".answer-body").removeClass("select-answer");
  1112. $(item).addClass("select-answer");
  1113. onClickAnswerPoint(JSON.stringify(answerList[index]));
  1114. });
  1115. }
  1116. else {
  1117. $(item).attr("answer-text", mytext);//填充作答内容
  1118. if (mytext == "" && !hasAudio) {
  1119. mytext = "未作答";
  1120. if (parentid != answerid) {
  1121. mytext = "&nbsp;&nbsp;&nbsp;&nbsp;";
  1122. $(item).children(".answer-text").html(mytext);
  1123. $(item).children(".answer-text").addClass("noanswer-border");
  1124. }
  1125. else {
  1126. $(item).children(".answer-text").text(mytext);
  1127. $(item).children(".answer-text").addClass("no-answer");
  1128. }
  1129. $(item).children(".answer-text").show();
  1130. }
  1131. else if (mytext == "" && hasAudio) {
  1132. $(item).children(".answer-text").hide();
  1133. }
  1134. else {
  1135. $(item).children(".answer-text").show();
  1136. $(item).children(".answer-text").text(mytext);
  1137. }
  1138. $(item).children(".answer-point-range").hide();
  1139. }
  1140. //评阅样式
  1141. if (answerList[index].Score == 0 && answerList[index].Text != "") {
  1142. $(item).children(".answer-text").addClass("bad-answer");
  1143. }
  1144. if (answerList[index].Score > 0) {
  1145. $(item).children(".answer-text").addClass("good-answer");
  1146. }
  1147. }
  1148. // 添加answer-boy的样式判断
  1149. var DStatusFlag = $(item).find(".answer-point-range").css("display") != "none";
  1150. if (DStatusFlag) {
  1151. $(item).attr("answer-showanswer", "0"); // 修改显示格式
  1152. }
  1153. else {
  1154. $(item).attr("answer-showanswer", "1"); // 修改显示格式
  1155. }
  1156. });
  1157. //打勾题的还原
  1158. $.each($(".checkbox"), function (num, item) {
  1159. //可作答状态,作答还原
  1160. var index = 0;
  1161. var answerid = $(item).attr("answer-id");
  1162. var parentid = $(item).attr("parent-anid");
  1163. for (var i = 0; i < answerList.length; i++) {
  1164. if (answerid == answerList[i].Id) {
  1165. index = i;
  1166. break;
  1167. }
  1168. }
  1169. //提交直接还原作答现场
  1170. var mytext = answerList[index].Text;//我的答案
  1171. var ischecked = mytext.indexOf("√") > -1;
  1172. var answerText = $(item).attr("answer-anstext");//参考答案
  1173. $(item).attr("answer-text", mytext);
  1174. $(item).find('input').prop('checked', ischecked);
  1175. //已提交,已评阅,还原HTML代码,去除checkbox
  1176. if (statusType == 1 || statusType == 2) {
  1177. mytext = mytext == "" ? "__" : mytext;
  1178. $(item).prop("outerHTML", "<div class='answer-body' answer-id='" + answerid + "' parent-anid='" + parentid + "' answer-anstext='" + answerText + "' answer-isky='2' answer-text='" + mytext + "'><div class='answer-audio-range'><img src='" + PicInfo.recordPlayImgUrl + "'/><span class='answer-audio-text'>作答音频</span></div><div class='answer-point-range' style='display:none;'><img src='" + PicInfo.answerPointImgUrl + "'/><span class='answer-point-text'>答题点</span></div><buttom class='answer-text' style='display:block;'>" + mytext + "</buttom></div>");
  1179. }
  1180. });
  1181. //点击事件重新绑定
  1182. if (statusType == 0 || statusType == 2) {
  1183. $(".answer-body").unbind("click").on("click", function () {
  1184. var curObj = new Object();
  1185. curObj.Id = $(this).attr("answer-id");//答题点ID
  1186. curObj.pId = $(this).attr("parent-anid");//答题点ID
  1187. curObj.IsKY = $(this).attr("answer-isky");//是否是口语试题,0-不是口语题,1-是口语题
  1188. curObj.Text = $(this).attr("answer-text");//用户作答内容
  1189. curObj.Score = $(this).attr("answer-score");//作答评分
  1190. curObj.AnsText = $(this).attr("answer-anstext");//参考答案
  1191. curObj.Comment = $(this).attr("answer-comment");//评语
  1192. curObj.pId = curObj.pId ? curObj.pId : curObj.Id;//组ID
  1193. $(".checkbox").removeClass("select-answer");
  1194. $(".answer-body").removeClass("select-answer");
  1195. if (statusType == 2) {
  1196. $(".answer-body[parent-anid=" + curObj.pId + "]").addClass("select-answer");
  1197. }
  1198. else {
  1199. $(this).addClass("select-answer");
  1200. }
  1201. //已作答,弹出作答答案
  1202. if ($(this).data("ans-status") == "1") {
  1203. //移动端添加外部处理
  1204. onClickAnswerPoint(JSON.stringify(curObj));
  1205. }
  1206. else {
  1207. //移动端添加外部处理,弹出作答操作
  1208. onClickAnswerPoint(JSON.stringify(curObj));
  1209. }
  1210. });
  1211. }
  1212. }
  1213. }
  1214. //老师评阅学生作答
  1215. function reviewStuAnswer(answerJson) {
  1216. if (answerJson != "" && answerJson) {
  1217. var answerObj = JSON.parse(answerJson);
  1218. var selectElement = $(".answer-body[answer-id='" + answerObj.Id + "']");
  1219. //$(selectElement).attr("answer-text", answerObj.Text);//用户作答内容
  1220. $(selectElement).attr("answer-score", answerObj.Score);//作答评分
  1221. $(selectElement).attr("answer-anstext ", answerObj.AnsText);//参考答案
  1222. $(selectElement).attr("answer-comment", answerObj.Comment);//评语
  1223. //评阅样式
  1224. if (answerObj.Score == 0) {
  1225. $(selectElement).children(".answer-text").removeClass("good-answer");
  1226. $(selectElement).children(".answer-text").addClass("bad-answer");
  1227. }
  1228. if (answerObj.Score > 0) {
  1229. $(selectElement).children(".answer-text").removeClass("bad-answer");
  1230. $(selectElement).children(".answer-text").addClass("good-answer");
  1231. }
  1232. }
  1233. }
  1234. //回填所有评阅信息,answerJson:所有作答及参考答案评阅信息List
  1235. function backupAllReview(answerJson) {
  1236. if (answerJson != "" && answerJson) {
  1237. var answerList = JSON.parse(answerJson);
  1238. $.each($(".answer-body"), function (num, item) {
  1239. //查找
  1240. var index = 0;
  1241. var answerid = $(item).attr("answer-id");
  1242. var parentid = $(item).attr("parent-anid");
  1243. for (var i = 0; i < answerList.length; i++) {
  1244. if (answerid == answerList[i].Id) {
  1245. index = i;
  1246. break;
  1247. }
  1248. }
  1249. //$(item).attr("answer-id", answerList[index].Id);//答题点ID
  1250. //$(item).attr("answer-text", answerList[index].Text);//用户作答内容
  1251. $(item).attr("answer-score", answerList[index].Score);//作答评分
  1252. $(item).attr("answer-anstext", answerList[index].AnsText);//参考答案
  1253. $(item).attr("answer-comment", answerList[index].Comment);//评语
  1254. //提交直接还原作答现场
  1255. var mytext = answerList[index].Text;//我的答案
  1256. var audioElement = $(item).children(".answer-audio-range").children("img").eq(0);
  1257. if ((answerList[index].Type == 3 || answerList[index].Type == 4) && answerList[index].AudioUrl != "") {
  1258. $(item).children(".answer-point-range").hide();
  1259. $(item).children(".answer-audio-range").css("display", "inline-block");
  1260. $(item).children(".answer-audio-range").children("span").text("作答音频(" + answerList[index].AudioLength + "s)");
  1261. //填充作答内容
  1262. $(item).attr("answer-text", mytext);
  1263. if (mytext != "") {
  1264. mytext = "(" + mytext + ")";
  1265. $(item).children(".answer-text").show();
  1266. $(item).children(".answer-text").text(mytext);
  1267. }
  1268. //是否之前存在作答音频
  1269. $(audioElement).attr("src", PicInfo.recordPlayImgUrl);
  1270. $(item).attr("answer-url", answerList[index].AudioUrl);
  1271. $(item).children(".answer-audio-range").attr("play-status", "0");
  1272. //独立绑定事件
  1273. $(audioElement).on("click", function () {
  1274. recordAudioClick(this, answerList[index].Id, answerList[index].AudioUrl);
  1275. });
  1276. $(item).children(".answer-audio-range").children("span").on("click", function () {
  1277. $(".answer-body").removeClass("select-answer");
  1278. $(item).addClass("select-answer");
  1279. onClickAnswerPoint(JSON.stringify(answerList[index]));
  1280. });
  1281. }
  1282. else {
  1283. $(item).attr("answer-text", mytext);//填充作答内容
  1284. if (mytext == "") {
  1285. mytext = "未作答";
  1286. if (parentid != answerid) {
  1287. mytext = "&nbsp;&nbsp;&nbsp;&nbsp;";
  1288. $(item).children(".answer-text").html(mytext);
  1289. $(item).children(".answer-text").addClass("noanswer-border");
  1290. }
  1291. else {
  1292. $(item).children(".answer-text").text(mytext);
  1293. $(item).children(".answer-text").addClass("no-answer");
  1294. }
  1295. }
  1296. else {
  1297. $(item).children(".answer-text").text(mytext);
  1298. }
  1299. $(item).children(".answer-text").show();
  1300. $(item).children(".answer-point-range").hide();
  1301. }
  1302. //评阅样式
  1303. if (answerList[index].Score == 0) {
  1304. $(item).children(".answer-text").addClass("bad-answer");
  1305. }
  1306. if (answerList[index].Score > 0) {
  1307. $(item).children(".answer-text").addClass("good-answer");
  1308. }
  1309. });
  1310. //打勾题的还原
  1311. $.each($(".checkbox"), function (num, item) {
  1312. //查找
  1313. var index = 0;
  1314. var answerid = $(item).attr("answer-id");
  1315. var parentid = $(item).attr("parent-anid");
  1316. for (var i = 0; i < answerList.length; i++) {
  1317. if (answerid == answerList[i].Id) {
  1318. index = i;
  1319. break;
  1320. }
  1321. }
  1322. //提交直接还原作答现场
  1323. var mytext = answerList[index].Text;//我的答案
  1324. var ischecked = mytext.indexOf("√") > -1;
  1325. var answerText = $(item).attr("answer-anstext");//参考答案
  1326. mytext = mytext == "" ? "__" : mytext;
  1327. $(item).prop("outerHTML", "<div class='answer-body' answer-id='" + answerid + "' parent-anid='" + parentid + "' answer-anstext='" + answerText + "' answer-isky='2' answer-text='" + mytext + "'><div class='answer-audio-range'><img src='" + PicInfo.recordPlayImgUrl + "'/><span class='answer-audio-text'>作答音频</span></div><div class='answer-point-range' style='display:none;'><img src='" + PicInfo.answerPointImgUrl + "'/><span class='answer-point-text'>答题点</span></div><buttom class='answer-text' style='display:block;'>" + mytext + "</buttom></div>");
  1328. });
  1329. //点击事件重新绑定
  1330. $(".answer-body").unbind("click").on("click", function () {
  1331. var curObj = new Object();
  1332. curObj.Id = $(this).attr("answer-id");//答题点ID
  1333. curObj.pId = $(this).attr("parent-anid");//答题点ID
  1334. curObj.IsKY = $(this).attr("answer-isky");//是否是口语试题,0-不是口语题,1-是口语题
  1335. curObj.Text = $(this).attr("answer-text");//用户作答内容
  1336. curObj.Score = $(this).attr("answer-score");//作答评分
  1337. curObj.AnsText = $(this).attr("answer-anstext");//参考答案
  1338. curObj.Comment = $(this).attr("answer-comment");//评语
  1339. curObj.pId = curObj.pId ? curObj.pId : curObj.Id;//组ID
  1340. $(".checkbox").removeClass("select-answer");
  1341. $(".answer-body").removeClass("select-answer");
  1342. //$(this).addClass("select-answer");
  1343. $(".answer-body[parent-anid=" + curObj.pId + "]").addClass("select-answer");
  1344. //已作答,弹出作答答案
  1345. if ($(this).data("ans-status") == "1") {
  1346. //移动端添加外部处理
  1347. onClickAnswerPoint(JSON.stringify(curObj));
  1348. }
  1349. else {
  1350. //移动端添加外部处理,弹出作答操作
  1351. onClickAnswerPoint(JSON.stringify(curObj));
  1352. }
  1353. });
  1354. }
  1355. }
  1356. //处理播放录音,answerid:答题点ID,isPlay:是否播放(0-暂停,1-播放)
  1357. function playRecordAudio(answerid, isPlay) {
  1358. //获取其他正在播放的音频
  1359. var playing = $(".answer-body[answer-id='" + answerid + "']").children(".answer-audio-range");
  1360. if (playing.length > 0) {
  1361. if (isPlay == "1") {
  1362. $(playing).attr("play-status", "1");
  1363. $(playing).find("img").attr("src", PicInfo.recordPauseImgUrl);//移动端要根据本地路径替换
  1364. }
  1365. else {
  1366. $(playing).attr("play-status", "0");
  1367. $(playing).find("img").attr("src", PicInfo.recordPlayImgUrl);//移动端要根据本地路径替换
  1368. }
  1369. }
  1370. }
  1371. //滚动到相应DIV
  1372. function scrollAnswer(answerid) {
  1373. //console.log(answerid);
  1374. $(".checkbox").removeClass("select-answer");
  1375. $(".answer-body").removeClass("select-answer");
  1376. var ansDom = $(".answer-body[parent-anid='" + answerid + "']");
  1377. if (ansDom.length == 0) {
  1378. ansDom = $(".checkbox[parent-anid='" + answerid + "']");
  1379. }
  1380. $(ansDom).addClass("select-answer");
  1381. var scroll_offset = $(ansDom).offset(); //得到box这个div层的offset,包含两个值,top和left
  1382. var offset_top = scroll_offset.top;
  1383. if (offset_top > 150) {
  1384. offset_top = offset_top - 200;
  1385. }
  1386. $("body,html").animate({
  1387. scrollTop: offset_top //让body的scrollTop等于pos的top,就实现了滚动
  1388. });
  1389. }
  1390. //暂停播放原文音频
  1391. function pauseTextAudio(audioid) {
  1392. //获取其他正在播放的音频
  1393. var playing = $(".audioImg[audio-id='" + audioid + "']");
  1394. if (playing.length > 0) {
  1395. $(playing).attr("play-status", "0");
  1396. $(playing).attr("src", PicInfo.audioPauseImgUrl);//移动端要根据本地 喇叭 路径替换
  1397. }
  1398. }
  1399. //原文音频播放按钮点击事件
  1400. function audioPlayClick(myobj) {
  1401. var curHtml = $(myobj).parent().find(".audioUrl").html();
  1402. var curAlt = $(myobj).attr("alt");
  1403. //处理当前按钮的状
  1404. if ($(myobj).attr("play-status") == "1") {
  1405. $(myobj).attr("play-status", "0");
  1406. $(myobj).attr("src", PicInfo.audioPauseImgUrl);//移动端要根据本地 喇叭 路径替换
  1407. }
  1408. else {
  1409. //停止其他作答音频播放
  1410. var isRecordPlaying = $(".answer-audio-range[play-status='1']");
  1411. if (isRecordPlaying.length > 0) {
  1412. $(isRecordPlaying).attr("play-status", "0");
  1413. $(isRecordPlaying).find("img").attr("src", PicInfo.recordPlayImgUrl);//移动端要根据本地路径替换
  1414. }
  1415. //停止其他原文音频播放
  1416. var audioPlaying = $(".audioImg[play-status='1']");
  1417. if (audioPlaying.length > 0) {
  1418. $(audioPlaying).attr("play-status", "0");
  1419. $(audioPlaying).attr("src", PicInfo.audioPauseImgUrl);//移动端要根据本地 喇叭 路径替换
  1420. }
  1421. //设置播放状态
  1422. $(myobj).attr("play-status", "1");
  1423. $(myobj).attr("src", PicInfo.audioPlayImgUrl);//移动端要根据本地 喇叭 路径替换
  1424. }
  1425. var info = new Object();
  1426. info.Id = $(myobj).attr("audio-id");
  1427. info.AudioUrl = curAlt;
  1428. //移动端添加外部处理
  1429. playVisiableAudioCallBack(1, JSON.stringify(info));
  1430. }
  1431. //作答录音播放按钮点击事件
  1432. function recordAudioClick(myobj, id, url) {
  1433. //处理当前按钮的状态
  1434. if ($(myobj).parent().attr("play-status") == "0") {
  1435. //停止其他作答音频播放
  1436. var isRecordPlaying = $(".answer-audio-range[play-status='1']");
  1437. if (isRecordPlaying.length > 0) {
  1438. $(isRecordPlaying).attr("play-status", "0");
  1439. $(isRecordPlaying).find("img").attr("src", PicInfo.recordPlayImgUrl);//移动端要根据本地路径替换
  1440. }
  1441. //停止其他原文音频播放
  1442. var audioPlaying = $(".audioImg[play-status='1']");
  1443. if (audioPlaying.length > 0) {
  1444. $(audioPlaying).attr("play-status", "0");
  1445. $(audioPlaying).attr("src", PicInfo.recordPlayImgUrl);//移动端要根据本地 喇叭 路径替换
  1446. }
  1447. //设置播放状态
  1448. $(myobj).parent().attr("play-status", "1");
  1449. $(myobj).attr("src", PicInfo.recordPauseImgUrl);//移动端要根据本地路径替换
  1450. }
  1451. else {
  1452. $(myobj).parent().attr("play-status", "0");
  1453. $(myobj).attr("src", PicInfo.recordPlayImgUrl);//移动端要根据本地路径替换
  1454. }
  1455. //移动端添加外部处理,播放录音
  1456. var info = new Object();
  1457. info.Id = id;
  1458. info.AudioUrl = url;
  1459. //移动端添加外部处理,播放录音
  1460. playVisiableAudioCallBack(3, JSON.stringify(info));
  1461. }
  1462. //生成从minNum到maxNum的随机数
  1463. function randomNum(minNum, maxNum) {
  1464. switch (arguments.length) {
  1465. case 1:
  1466. return parseInt(Math.random() * minNum + 1, 10);
  1467. break;
  1468. case 2:
  1469. return parseInt(Math.random() * (maxNum - minNum + 1) + minNum, 10);
  1470. break;
  1471. default:
  1472. return 0;
  1473. break;
  1474. }
  1475. }
  1476. // 传递显示单词wordFlag/短语phraseFlag/句型sentenceFlag,true表示高亮,false表示不高亮
  1477. function showGLWorld(wordFlag, phraseFlag, sentenceFlag) {
  1478. styleWPSContrl.wordFlag = wordFlag;
  1479. styleWPSContrl.phraseFlag = phraseFlag;
  1480. styleWPSContrl.sentenceFlag = sentenceFlag;
  1481. dealAnswerFunc(document, true, true);
  1482. }
  1483. function playVisiableAudioCallBack(type, url) {
  1484. //console.log(url);
  1485. cancelBubble();
  1486. plugin.startPlay(type, url);
  1487. }
  1488. function onClickAnswerPoint(data) {
  1489. //alert(JSON.stringify(data));
  1490. console.log(JSON.stringify(data));
  1491. cancelBubble();
  1492. plugin.onClickAnswerPoint(data);
  1493. }
  1494. function onClickKeyHide() {
  1495. //alert(JSON.stringify(data));
  1496. cancelBubble();
  1497. plugin.onClickKeyHide();
  1498. }
  1499. function onClickKeyShow() {
  1500. //alert(JSON.stringify(data));
  1501. cancelBubble();
  1502. plugin.onClickKeyShow();
  1503. }
  1504. function cancelBubble(e) {
  1505. var evt = e ? e : window.event;
  1506. if (evt.stopPropagation) { //W3C
  1507. evt.stopPropagation();
  1508. } else { //IE
  1509. evt.cancelBubble = true;
  1510. }
  1511. }
  1512. function getSelectedText(title) {
  1513. var txt;
  1514. if (window.getSelection) {
  1515. txt = window.getSelection().toString();
  1516. } else if (window.document.getSelection) {
  1517. txt = window.document.getSelection().toString();
  1518. } else if (window.document.selection) {
  1519. txt = window.document.selection.createRange().text;
  1520. }
  1521. JSInterface.callback(txt, title);
  1522. }