1//////////////// ååãã¼ã¸_ã¢ã³ã¼ãã£ãªã³æ©è½ //////////////// 2 3// ã¢ã³ã¼ãã£ãªã³ç¨ã¯ã©ã¹ã®çæ 4class ItemDetailAccordion { 5 constructor(selecter, titleSelector, detailSelector) { 6 // selecterè¦ç´ ãåå¾ 7 this.accordions = document.querySelectorAll(selecter); 8 9 // è¤æ°ã®selecterè¦ç´ ãå±é 10 this.accordions.forEach((accordion) => { 11 const title = accordion.querySelector(titleSelector); 12 const detail = accordion.querySelector(detailSelector); 13 14 if (title && detail) { 15 // ã¯ãªãã¯ãããactiveã¯ã©ã¹ãä»ä¸ 16 title.addEventListener("click", () => { 17 title.classList.toggle("active"); 18 detail.classList.toggle("active"); 19 }); 20 } 21 }) 22 } 23} 24 25// ãã¼ãæã«ã¤ã³ã¹ã¿ã³ã¹ãçæãçºç«ãæå®ã¯ã©ã¹ãconstructorã«å¼æ°ã§æ¸¡ããã 26document.addEventListener("DOMContentLoaded", () => { 27 new ItemDetailAccordion(".item-accordion", ".item-title", ".item-detail"); 28}); 29 30//////////////// ååãã¼ã¸_ã¬ãã¥ã¼ã²ã¼ã¸æ©è½ //////////////// 31 32const initReviewGauge = () => { 33 34 // ã¬ãã¥ã¼ã²ã¼ã¸æ©è½_親è¦ç´ åå¾ï¼ç£è¦å¯¾è±¡ã¯ã©ã¹ï¼ 35 const reviewGauge = document.querySelector(".review_gauge"); 36 37 // ç£è¦ããä½ç½®ã®è¨å® 38 const options = { 39 root: null, 40 rootMargin: "0px", 41 threshold: 0.2, 42 }; 43 44 // ã¬ãã¥ã¼ã²ã¼ã¸æ©è½ã®é¢æ° 45 const reviewsGetCount = (entries, obs) => { 46 const entry = entries[0]; // æåã®ç£è¦å¯¾è±¡ã®å¤æ° 47 48 if (!entry.isIntersecting) return; // æå®ç¯å²ã«å ¥ã£ã¦ãªããã°å¦ççµäº 49 50 const reviewCount = document.querySelector("#review_count").innerText; 51 const reviewCountNumber = Number(reviewCount); 52 const reviewCalculation = document.querySelectorAll(".review_calculation"); 53 54 // 空é åå®ç¾©ï¼ããã«åã¬ãã¥ã¼çãå ¥ãï¼ 55 let reviewArray = []; 56 57 // åã¬ãã¥ã¼çãç®åºãã¦ç©ºé åã«æ ¼ç´ 58 reviewCalculation.forEach((item) => { 59 const reviewText = item.innerText; 60 const reviewlate = (Number(reviewText) / reviewCountNumber) * 100; 61 reviewArray.push(reviewlate); 62 63 // ç®åºããã¬ãã¥ã¼çã表示 64 item.innerText = `${reviewlate.toFixed(0)}%`; 65 item.classList.add("review_black"); 66 }); 67 68 // ã¬ãã¥ã¼ã²ã¼ã¸ç®æã®åå¾ 69 const reviewLine = document.querySelectorAll(".review_line"); 70 71 // åå¾ãã%ã®å¤ãwidthã§é©ç¨ãã²ã¼ã¸ã表示ããã 72 reviewLine.forEach((item, index) => { 73 const width = reviewArray[index]; 74 item.style.width = `${width}%`; 75 76 // widthã98%以ä¸ã®æãè§ä¸¸ã«ãã 77 if (width >= 98) { 78 item.style.borderRadius = "5px"; 79 } 80 }); 81 82 // ç£è¦ã忢 83 obs.unobserve(entry.target); 84 }; 85 86 // IntersectionObserverã¤ã³ã¹ã¿ã³ã¹ã®çæ 87 const observer = new IntersectionObserver(reviewsGetCount, options); 88 89 // ç£è¦å¯¾è±¡ãæå®ã®ç¯å²ã«å ¥ã£ãããreviewsGetCountãçºç« 90 observer.observe(reviewGauge); 91 92} 93 94initReviewGauge(); 95 96 97//////////////// ååãã¼ã¸_ã¬ãã¥ã¼æå»_ç§æ°é¤å»æ©è½ //////////////// 98 99const removeReviewTimeSeconds = () => { 100 101 // review_timeè¦ç´ ããã¹ã¦åå¾ 102 const reviewTimes = document.querySelectorAll(".review_time"); 103 104 reviewTimes.forEach((item) => { 105 const reviewTimeText = item.innerText.trim(); 106 107 // æ²è¼æ¥ï¼YYYY/MM/DD ã«ãã 108 item.innerText = reviewTimeText.replace(/^(.+?\d{4}[-\/]\d{1,2}[-\/]\d{1,2})\s+.*$/, "$1"); 109 }); 110 111} 112 113removeReviewTimeSeconds();
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.