const chePhoto = 'https://www.japankuru.com/gld-kanri/data/uploads/2026/03/teisensei.png';
function isMobile() { return window.innerWidth <= 768; }
let currentModalId = null;
let currentBsId = null;
// Sakura animation
function createSakuraPetals() {
const hero = document.getElementById('hero');
for (let i = 0; i < 20; i++) {
const petal = document.createElement('div');
petal.className = 'sakura-petal';
petal.style.left = Math.random() * 100 + '%';
petal.style.animationDuration = (Math.random() * 6 + 10) + 's';
petal.style.animationDelay = (Math.random() * 15) + 's';
hero.appendChild(petal);
}
}
createSakuraPetals();
// Scroll effects
window.addEventListener('scroll', function() {
const header = document.getElementById('header');
const stickyBar = document.getElementById('stickyBar');
const backToTop = document.getElementById('backToTop');
if (window.scrollY > 100) {
header.classList.add('scrolled');
stickyBar.classList.add('visible');
} else {
header.classList.remove('scrolled');
stickyBar.classList.remove('visible');
}
if (window.scrollY > 600) {
backToTop.classList.add('visible');
} else {
backToTop.classList.remove('visible');
}
});
// Product Data
const tabData = {
cosme: {
title: '彩妝・美容',
products: [
{
id: 21, slug: 'eclore-whitening', name: '3D蛋殼生物磷灰石潔牙粉・藥用牙膏', brand: 'eclore',
price: 1595, priceNote: '潔牙粉25g ¥1,595 / 藥用牙膏90g ¥1,595',
image: 'https://www.japankuru.com/gld-kanri/data/uploads/2026/03/eclore-whitening-powder-tube-jars.jpg',
label: 'type-hot', labelText: '話題', plan: 'platinum',
isMultiProduct: true,
subProducts: [
{ name: '藥用3D蛋殼生物磷灰石牙膏', nameJp: '薬用3Dホワイトニングペースト', size: '90g', price: 1595 },
{ name: '3D蛋殼生物磷灰石潔牙粉', nameJp: '3Dホワイトニングパウダー', size: '25g', price: 1595 }
],
originalUrl: 'https://droral.jp/3dpowder/',
tip: 'Dr.Oral 3D WHITE口腔亮白護理系列,採用奈米級3D蛋殼生物磷灰石,協助吸附牙齒表面污漬,維持清新亮白印象。牙粉蛋殼生物磷灰石含量高達40%,搭配多種潔淨與保濕成分,',
tipFull: 'Dr.Oral 3D WHITE口腔亮白護理系列,採用奈米級3D蛋殼生物磷灰石,協助吸附牙齒表面污漬,維持清新亮白印象。牙粉蛋殼生物磷灰石含量高達40%,搭配多種潔淨與保濕成分,日常刷牙即可兼顧清潔與口腔保養。另有薬用牙膏款,輔助維持牙齦健康,是重視自然系亮白護理者的人氣選擇。',
column: 'https://www.japankuru.com/tw/shopping/263339/', hasVideo: true, videoId: '73ffThRqZ9M',
voices: [
{ initial: 'S', name: 'sacuraisho', attr: '40多歲・家庭主婦', text: '裡面還添加了「3D蛋殼羥基磷灰石」這個成分,感覺蠻特別的,就想說一定要試試看。', date: '2026.03', color: '#E91E63', snsUrl: 'https://www.facebook.com/sacuralin/posts/pfbid0QxLhS5ZfpA6oHoehXyCF7su7pb3T3SYKaBwFJuoKfD8BHA1HTiTAZhVLqb7Wshwvl' },
{ initial: 'C', name: 'Chiu-wei Liu', attr: '30多歲・上班族', text: '在日本各大藥妝店與生活雜貨店(像是 Loft)都是長期熱銷的人氣商品,非常值得入手試試!', date: '2026.03', color: '#9C27B0', snsUrl: 'https://www.facebook.com/chiuwei.liu/posts/pfbid0ewzUBFK6pEgAMYUVe5FRLVdt3St55bXp98PGjRHcBk8EXD9Z9TuQC4UJ2LQS6kGPl' },
{ initial: '蔡', name: '蔡徐嘉', attr: '30多歲・上班族', text: '刷完之後會有一種清新乾淨的感覺,睡覺的時候連帶覺得自己呼吸到的空氣都更清新了', date: '2026.03', color: '#3F51B5', snsUrl: 'https://www.facebook.com/hsuchia.tsai/posts/pfbid02yRT7QQ7och2zu1Zj6ffmBgDVFQAwMnnXztZ7WPeye1c6QYYSSHCWFZWvzGBvbELkl' },
{ initial: 'C', name: 'Chih Lin Kung', attr: '30多歲・留學生', text: '另外我也很喜歡潔牙粉的設計。粉末非常細緻,搭配牙刷使用時可以更深入清潔牙齒表面。', date: '2026.03', color: '#009688', snsUrl: 'https://www.instagram.com/p/DV98gOREhkk/?img_index=1' },
{ initial: 'L', name: 'lori7906', attr: '30多歲・上班族', text: '使用完牙齒整體感覺非常光滑,早上起床時口臭也比以前變淡許多~', date: '2026.03', color: '#FF5722', snsUrl: 'https://www.instagram.com/p/DV8qTpIj8qt/?img_index=1' },
{ initial: 'K', name: 'Kelly', attr: '30多歲・上班族', text: '我自己本身的牙齒白到牙醫問我是不是做過美白牙齒😂 但真的完全沒有,是因為用對了牙膏!', date: '2026.03', color: '#795548', snsUrl: 'https://www.instagram.com/p/DV8oDEjiULt/?img_index=1' },
{ initial: 'W', name: 'Wei Wei', attr: '30多歲・上班族', text: '最近換了這組日本的 Dr.Oral 藥用美白牙膏跟潔牙粉,目前用下來覺得很對我的胃。', date: '2026.03', color: '#607D8B', snsUrl: 'https://www.facebook.com/permalink.php?story_fbid=pfbid0E6xomLfbTaGgPKNcAs1HHVKMNY9JDspMALoBt2EpF3Nsz1FvMixWyMejYecgfRazl&id=100001466739903&locale=ja_JP' },
{ initial: 'K', name: 'Kelly Lau', attr: '20多歲・上班族', text: '如果你也是茶飲或咖啡重度愛好者,真的很推薦試試看這款牙粉,效果真的比想像中還好!', date: '2026.03', color: '#4CAF50', snsUrl: 'https://www.facebook.com/story.php?story_fbid=26286331127664089&id=100001416789118&mibextid=wwXIfr&rdid=e5mww2xKSLxbbedj#' },
{ initial: 'Ko', name: 'Kobayashi Celine', attr: '40多歲・自由工作者', text: '粉末很細緻,用牙刷沾一點刷牙🪥 刷完牙齒真的會有那種很乾淨、很清爽、牙齒滑滑的感覺', date: '2026.03', color: '#FF9800', snsUrl: 'https://www.instagram.com/p/DV7cpPSDx_i/?igsh=MW1mMWV3M2RyZjhvYQ%3D%3D&img_index=1' },
{ initial: '新', name: '新日一成', attr: '40多歲・個人創業者', text: '對於像我這種每天咖啡不離手的中年男士來說,能同時做到美白、預防蛀牙、減少口臭、保持清新口氣,真的很加分。', date: '2026.03', color: '#2196F3', snsUrl: 'https://www.facebook.com/hu.wei.7/posts/pfbid09YZjzgTDsqonnDkJ3iaqePpkRuohDPszUWWvjmiYkGuxha1K5sGSJvNXR65bs58ol' }
], voiceCount: 10
},
{
id: 26, slug: 'cure-white-clear-gel', name: 'Cure White Clear Gel 四效去角質凝膠', brand: 'Cure',
price: 2750, priceNote: '200g ¥2,500(含稅 ¥2,750)',
image: 'https://www.japankuru.com/gld-kanri/data/uploads/2026/03/cure-white-clear-gel-wooden-bucket.jpg',
label: 'type-exclusive', labelText: '日本限定', plan: 'gold',
originalUrl: 'https://www.4cs-cure.co.jp/shop/products/cure-014?srsltid=AfmBOoo6jS-5VU8neJerfFrM_Iqb-WzPzOuJzf7OW07YM2EbVTT0d-Wa',
tip: 'Cure「White Clear Gel四效去角質凝膠」是每週保養必備的美肌橡皮擦,溫和去除老廢角質,同時提亮膚色、滋潤保濕並預防痘痘。',
tipFull: 'Cure「White Clear Gel四效去角質凝膠」是每週保養必備的美肌橡皮擦,溫和去除老廢角質,同時提亮膚色、滋潤保濕並預防痘痘。含水溶性胎盤素與甘草酸二鉀等薬用成分,加上多種草本保濕精華,使用後肌膚光滑透亮,後續保養吸收加成,也適合初階與敏弱肌膚,每週2次即可維持最佳膚況。',
column: 'https://www.japankuru.com/tw/shopping/257656/', hasVideo: true, videoId: 'lYlS9VmR0ZI',
voices: [
{ initial: 'J', name: 'ジャリンリン', attr: '30多歲・上班族', text: '最近保養桌上多了一瓶默默很有存在感的——Cure 藥用去角質凝膠。', date: '2026.03', color: '#E91E63', snsUrl: 'https://www.facebook.com/jialing.shies/posts/pfbid0MeEmLeRhTFejHHzq9GqPdk3pE74GF4KX728oCFtCiQnq3kob7uLbNWETgRc8WRmKl' },
{ initial: '苦', name: '苦逼留學生的碎念', attr: '30多歲・上班族', text: '最近覺得背長很多小顆粒 剛好來用看看這個去角質凝膠', date: '2026.03', color: '#9C27B0', snsUrl: 'https://www.facebook.com/permalink.php?story_fbid=pfbid02wsZc68pNckakhU2Asx9RtDjFJCZJV3LLDSnq73DfpZsTF9igXoUWNQETjuGnqaMPl&id=100052568835647&rdid=KQIqDkaFmpOrt5e2#' },
{ initial: '3', name: '31803', attr: '40多歲・家庭主婦', text: '最近用到一罐還蠻好用的去角質', date: '2026.03', color: '#3F51B5', snsUrl: 'https://www.facebook.com/osakapleb/posts/pfbid031dSJnTWkiVFXNPMjjsxHTTZxCeUWc7Ucu3CPtypNrzCGqemwuttv38DntxxyQmfql' },
{ initial: 'C', name: 'Chiu-wei Liu', attr: '30多歲・上班族', text: '這次是介紹Cure這款 去角質Gel,洗澡的時候一起去角質 超方便!!!!', date: '2026.03', color: '#009688', snsUrl: 'https://www.facebook.com/chiuwei.liu/posts/pfbid0ff3vdZyZAUFPUP4ZBZjTcGpQXkxXTvmPoNwphHN5D6dgtPF2jLWuRXCaHGZrxPhRl' },
{ initial: 'R', name: 'Rebecca528', attr: '30多歲・上班族', text: '我自己其實已經默默用到 第三罐了。', date: '2026.03', color: '#FF5722', snsUrl: 'https://www.instagram.com/p/DV063CPj2B-/' }
], voiceCount: 5
}
]
},
medicine: {
title: '醫藥品',
products: [
{
id: 4, slug: 'pabron-gold-a', name: '百保能GOLD A (パブロンゴールドA) 綜合感冒藥', brand: '大正製藥',
price: 2057, priceNote: '130錠・28包 ¥2,057 / 210錠・44包 ¥3,025',
image: 'https://www.japankuru.com/gld-kanri/data/uploads/2026/03/teisensei_pabron_golda.jpg',
label: 'type-exclusive', labelText: '日本限定', plan: 'platinum',
originalUrl: 'https://brand.taisho.co.jp/pabron/',
tip: '大正製藥「PABRON百保能」為創立近百年的經典綜合感冒藥品牌,主以呼吸道黏膜防禦為設計理念。紅金「GOLD A」含乙醯胺酚,適合多症狀初期緩解;',
tipFull: '大正製藥「PABRON百保能」為創立近百年的經典綜合感冒藥品牌,主以呼吸道黏膜防禦為設計理念。紅金「GOLD A」含乙醯胺酚,適合多症狀初期緩解;藍金版「Pro-X」,採用布洛芬作為退燒止痛成分(限15歲以上使用)。兩款皆針對咳嗽、喉痛、鼻塞等症狀設計,是臺日人氣家庭常備藥熱門選擇。\n※:使用前請詳閱說明書並依指示之適應症與用法用量使用。',
column: 'https://www.japankuru.com/tw/shopping/264144/', hasVideo: false,
voices: [
{ initial: '花', name: '花森米米', attr: '30多歲・自由工作者', text: 'パブロンゴールドA,是在日本很常見的家庭常備藥之一。', date: '2026.03', color: '#E91E63', snsUrl: 'https://www.instagram.com/p/DV5MG-mEqyl/' },
{ initial: '辛', name: '辛宜靜', attr: '30多歲・上班族', text: '只要有任何感冒前兆都可以喝一包,讓我的突發感冒可以先壓壓。', date: '2026.03', color: '#FF5722', snsUrl: 'https://www.facebook.com/kid0804/posts/pfbid02LoRRVmigQ33XsvCQBKUtQe8hNhpq5QJR5kQP8nyrQrtJcMYmNsq1moy5oHFgJGFQl' },
{ initial: '日', name: '日本零食好吃驚', attr: '30多歲・上班族', text: '這是我們家中必備的「感冒藥」,可以用來緩解各式各樣的感冒症狀,真的太全能太好用了!', date: '2026.03', color: '#9C27B0', snsUrl: 'https://www.instagram.com/p/DVntk4BGpdZ/?img_index=1' }
], voiceCount: 3
},
{
id: 5, slug: 'pabron-ace-prox', name: '百保能Pro-X (パブロンエースPro-X) 感冒藥', brand: '大正製藥',
price: 1518, priceNote: '18錠・6包 ¥1,518 / 36錠・12包 ¥2,178',
image: 'https://www.japankuru.com/gld-kanri/data/uploads/2026/03/column-pabron-aceprox-back-label.jpg',
label: 'type-exclusive', labelText: '日本限定', plan: 'platinum',
originalUrl: 'https://brand.taisho.co.jp/pabron/',
tip: '大正製藥「PABRON百保能」為創立近百年的經典綜合感冒藥品牌,主以呼吸道黏膜防禦為設計理念。藍金版「Pro-X」採用布洛芬作為退燒止痛成分(限15歲以上使用)。',
tipFull: '大正製藥「PABRON百保能」為創立近百年的經典綜合感冒藥品牌,主以呼吸道黏膜防禦為設計理念。紅金「GOLD A」含乙醯胺酚,適合多症狀初期緩解;藍金版「Pro-X」,採用布洛芬作為退燒止痛成分(限15歲以上使用)。兩款皆針對咳嗽、喉痛、鼻塞等症狀設計,是臺日人氣家庭常備藥熱門選擇。\n※:使用前請詳閱說明書並依指示之適應症與用法用量使用。',
column: 'https://www.japankuru.com/tw/shopping/264144/', hasVideo: false,
voices: [
{ initial: 'S', name: 'Sharon Hsieh', attr: '20多歲・上班族', text: '裡面含有能幫助改善 喉嚨痛、咳嗽與發炎 的成分,能在感冒初期就好好對應各種不舒服的症狀。', date: '2026.03', color: '#E91E63', snsUrl: 'https://www.facebook.com/sharonxhsieh/posts/pfbid02YsaPMn7pxzBi9SsateQtua66EGeUfetxHbuEUUNSf75VSSm5YRnLSU1W1coLfZ4Fl' },
{ initial: '林', name: '林桑的日本遊記', attr: '40多歲・上班族', text: '這款是日本大正製藥的產品,在日本算是滿有名的老品牌,很多人逛藥妝店應該都看過!', date: '2026.03', color: '#9C27B0', snsUrl: 'https://www.instagram.com/p/DV3QDCtkqiZ/?img_index=1' },
{ initial: '如', name: '如月ゆな', attr: '30多歲・上班族', text: '我最喜歡它的錠劑設計,完全沒有粉末感冒藥常見的那種苦味。', date: '2026.03', color: '#3F51B5', snsUrl: 'https://www.instagram.com/p/DVdNKKrklYv/?igsh=c251N3UxZW1zZWI4&img_index=1' },
{ initial: '李', name: '李映宣', attr: '20多歲・上班族', text: '粉末型的綜合感冒藥,一包一包分好,其實還蠻方便的。', date: '2026.03', color: '#607D8B', snsUrl: 'https://www.facebook.com/permalink.php?story_fbid=pfbid031SjxEMnTAgBnoYGh9oHU9G4GPoLuYcfjHdtDdTwEUAuSeY6r7iso9htZ8PaadJf3l&id=100001498612711' },
{ initial: 'I', name: 'Iru Chin', attr: '30多歲・自由工作者', text: '其實最早的パブロン是止咳藥,之後才演變為感冒藥💊,我都拿來當家裡常備藥。', date: '2026.03', color: '#4CAF50', snsUrl: 'https://www.facebook.com/natsuki.chin.7/posts/pfbid06VY12vPT9e52fifhschY4BJUbrKL6iBPkkgTePfGV7JAxiJmQTRgmeMgTVpNW9oQl' },
{ initial: '新', name: '新日一成', attr: '40多歲・個人創業者', text: '如果是像我一樣,常常一感冒就先從喉嚨痛開始的人,這款真的可以放在家裡備著。', date: '2026.03', color: '#FF9800', snsUrl: 'https://www.facebook.com/hu.wei.7/posts/pfbid0kVwaP1MQ8PtaWQ8UypMGDDea1G1kBMniiFtbGV5pvBNwxDGuGbvgHh3urtq7vvsVl' },
{ initial: 'S', name: 'Shizuku Chu', attr: '30多歲・上班族', text: '製藥老牌廠商的藥,值得信賴而且我個人是覺得蠻有效果又好吞還不會愛睡覺~', date: '2026.03', color: '#2196F3', snsUrl: 'https://www.facebook.com/story.php?story_fbid=35337702805828358&id=100000462608255&mibextid=wwXIfr&rdid=3EvRqFa0oMasAJ7w#' }
], voiceCount: 7
},
{
id: 20, slug: 'kenei-magnesium-oxide', name: '健榮製藥 氧化鎂E便秘藥', brand: '健榮製藥',
price: 680, priceNote: '40錠 ¥680 / 90錠 ¥1,200 / 180錠 ¥2,200 / 360錠 ¥4,000',
image: 'https://www.japankuru.com/gld-kanri/data/uploads/2026/03/kenei-product-detail-1-2048x1536.jpg',
label: 'type-hot', labelText: '新話題', plan: 'platinum',
originalUrl: 'https://www.kenei-pharm.com/ebenpi/',
tip: '健榮製藥-氧化鎂E便秘藥,日本藥妝店常見的非刺激性便秘藥。採用國產氧化鎂透過滲透壓機制增加腸道水分,協助軟化糞便,較不易引發腹痛與依賴性。',
tipFull: '健榮製藥-氧化鎂E便秘藥,日本藥妝店常見的非刺激性便秘藥。採用國產氧化鎂透過滲透壓機制增加腸道水分,協助軟化糞便,較不易引發腹痛與依賴性。速崩技術錠劑,搭配微甜檸檬風味,提升適口性,接受度較高。成人可依體質調整劑量,輕巧包裝方便攜帶,是慢性便秘管理的選擇之一。非刺激性瀉藥效果較溫和,是日本藥妝店便秘藥的新話題,也是慢性便秘管理的新選擇。',
column: 'https://www.japankuru.com/tw/shopping/263178/', hasVideo: true, videoId: '9m6r4sCWBrw',
voices: [
{ initial: 'W', name: 'Wei Wei', attr: '30多歲・上班族', text: '最近日本開始回溫,出門小旅行的機會變多。我發現他們家出的旅行裝(隨身包)真的是大救星!', date: '2026.03', color: '#E91E63', snsUrl: 'https://www.facebook.com/permalink.php?story_fbid=pfbid02vNkKin39zi89gjSKPA7NNozyURvonfkLDmYBLkwa2gtLBPyd3Dq3uPLJ5cEU64LFl&id=100001466739903' },
{ initial: '新', name: '新日一成', attr: '40多歲・個人創業者', text: '家裡有個小一的孩子,有時候因為飲食不均衡或水喝太少,也會有便便不順的情況。這種溫和型的產品,家裡備著就很安心。', date: '2026.03', color: '#9C27B0', snsUrl: 'https://www.facebook.com/hu.wei.7/posts/pfbid0E938bxNDG3zkg2dqYHL981CiDUmiF1EtrEToUrom28V9gagqfhE45KG2LY1gbuwKl' },
{ initial: 'S', name: 'Sharon Hsieh', attr: '20多歲・上班族', text: '現在我的行李裡,有個專門裝藥的小袋子,裡面除了胃藥和感冒藥之外,也多放了這個腸胃的小備品。', date: '2026.03', color: '#3F51B5', snsUrl: 'https://www.facebook.com/sharonxhsieh/posts/pfbid028tT3vj9iSgPR5E8JZ9hmmk8bRwA6cDhBwSiSMkN9j1tYc8YNkkuSNCkYM5BMY4vDl' },
{ initial: '李', name: '李映宣', attr: '20多歲・上班族', text: '偶爾不太順的時候用,可以讓狀態慢慢回到正常,也不會有太強烈的不適感', date: '2026.03', color: '#009688', snsUrl: 'https://www.facebook.com/permalink.php?story_fbid=pfbid02fT9dv8vmFpenvA1giybBKXNwW56UyLg92QEHBhrNfG8pw6554SnvrMF8JrYNNdZsl&id=100001498612711' },
{ initial: '優', name: '優妮帶你遊大阪不踩雷', attr: '30多歲・上班族', text: '旅行裝放包包超方便,真的就是那種「欸我有帶,心就定一半」的安心感', date: '2026.03', color: '#FF5722', snsUrl: 'https://www.instagram.com/p/DVU-hr4krds/?img_index=1' },
{ initial: '日', name: '日本零食好吃驚', attr: '30多歲・上班族', text: '這款產品的核心成分是氧化鎂,不是那種強行刺激腸道的瀉藥,而是透過「吸收水分」來軟化便便', date: '2026.03', color: '#795548', snsUrl: 'https://www.instagram.com/p/DV4zkhXD7Kb/?img_index=1' },
{ initial: 'C', name: 'Chih Lin Kun', attr: '30多歲・留學生', text: '實際服用後覺得錠劑大小適中,吞服也很方便', date: '2026.03', color: '#607D8B', snsUrl: 'https://www.instagram.com/p/DV9-_pyki69/?img_index=1' },
{ initial: 'P', name: 'pudding🍮', attr: '30多歲・上班族', text: '它與市面上強迫腸胃蠕動的瀉藥完全不同,這種不絞痛、溫和的排便體驗,真的非常實用。', date: '2026.03', color: '#4CAF50', snsUrl: 'https://www.instagram.com/p/DV8zHNnkhwb/' },
{ initial: 'S', name: 'shark_dosa', attr: '20多歲・上班族', text: '像我這種飲食一亂掉、腸胃就容易出狀況的人,看到這種實用型常備藥真的會默默記下來。', date: '2026.03', color: '#FF9800', snsUrl: 'https://www.instagram.com/p/DV8pTwsD1kM/?img_index=1' },
{ initial: '蔡', name: '蔡昀臻', attr: '20多歲・上班族', text: '身為外食族,有的時候工作壓力大,肚子總是卡卡的,這時就需要這個好幫手', date: '2026.03', color: '#2196F3', snsUrl: 'https://www.facebook.com/story.php?story_fbid=26081505711511890&id=100002374528664&mibextid=wwXIfr&rdid=KbFxdcK1fawc7zq3#' }
], voiceCount: 10
},
{
id: 23, slug: 'oronine-h-ointment', name: 'Oronine H軟膏', brand: '大塚製藥',
price: 385, priceNote: '11g軟管裝 ¥385 / 50g軟管裝 ¥770',
image: 'https://www.japankuru.com/gld-kanri/data/uploads/2026/03/oronine_portrait_under_1mb.jpg',
label: 'type-exclusive', labelText: 'PR', plan: 'basic', isPR: true,
originalUrl: 'https://www.otsuka.co.jp/ohn/',
tip: '「PR」大塚製藥-Oronine H應急軟膏,在日長銷73年的家庭常備外傷用藥。含葡萄糖酸氯己定溶液,適用擦傷、乾裂、輕微燙傷及痤瘡等。11g與50g兩種尺寸,方便隨身攜帶。',
tipFull: '
「PR」\n身邊有很多日本朋友跟我說,發跡於四國・徳島縣的「Oronine H軟膏」根本就是他們童年回憶的一部分。因為許多人的家中都會常備有這一瓶,只要調皮搗蛋擦傷,或是粗心大意不小心被燙到,甚至是冬天皮膚乾裂時,家人就會拿出這罐軟膏。不過也有11公克和50公克的條裝版本,方便攜帶可以放在包包作為隨身應急藥膏。\n\n「Oronine H軟膏」主要含有葡萄糖酸氯己定溶液(Chlorhexidine Gluconate),這是廣泛用於殺菌、消毒的有效成分。除了可以用於擦傷、刀傷、裂傷、乾裂、以及輕微燙傷等部位之外,亦可依適應症使用於痤瘡與粉刺等皮膚狀況。\n\n
📋 名稱 オロナインH軟膏
🏷 醫藥分類 第2類医薬品
✅ 適應症 擦傷・裂傷・乾裂・輕微燙傷・痤瘡・粉刺
\n※:使用前請詳閱說明書並依指示之適應症與用法用量使用。',
column: null, hasVideo: false, voices: [], voiceCount: 0
},
{
id: 25, slug: 'taisho-gaichoyaku-k', name: '大正胃腸藥K', brand: '大正製藥',
price: 1670, priceNote: '16包/70錠 ¥1,670 / 24包/110錠 ¥2,299 / 38包/190錠 ¥3,388 / 50包/230錠 ¥4,054',
image: 'https://www.japankuru.com/gld-kanri/data/uploads/2026/03/taisho-gaichoyaku-k-man-holding-1.jpg',
label: 'type-exclusive', labelText: '日本限定', plan: 'basic',
originalUrl: 'https://www.catalog-taisho.com/category/05/001/01082/',
tip: '大正製藥-大正胃腸藥K,兼顧敏弱胃調理,幫助消化與舒緩緊張胃。獨家結合「安中散」與「芍藥甘草湯」,應對消化不良到壓力大引起的胃部不適。日本上班族高人氣家庭常備藥。',
tipFull: '日本藥妝店裡陳列的眾多胃腸藥當中,誕生於1978年的大正漢方胃腸藥也是眾多日本人推崇的經典家庭常備藥。獨家結合能夠促進胃腸消化機能的「安中散」,以及舒緩胃部緊張狀態的「芍藥甘草湯」,能夠應對消化不良到壓力大引起的胃部不適,不少忙碌的日本上班族的抽屜或包包當中,都可見到這款長銷多年的胃腸藥。\n說到「大正胃腸藥K」,則是日本藥妝通才知道的大正漢方胃腸藥「芍薬甘草湯增量版」!同樣是5歲以上就可服用,但「芍藥甘草湯」的添加劑量則是從140毫克增量至170毫克!\n\n名稱:大正胃腸薬K\n醫藥分類:第2類医薬品\n適應症:胃痛、胃脹、胃炎、胃部不適、食慾不振、打嗝、腹痛、胸口灼熱、噁心、胃酸過多、腹部膨脹感\n※:使用前請詳閱說明書並依指示之適應症與用法用量使用。',
column: null, hasVideo: false,
voices: [
{ initial: 'R', name: 'RUBY Lee', attr: '20多歲・上班族', text: '我自己覺得用起來算是比較溫和,不會有太強烈的刺激感,但又可以慢慢讓腸胃舒服一點。', date: '2026.03', color: '#E91E63', snsUrl: 'https://www.facebook.com/permalink.php?story_fbid=pfbid032mWxeYHKL1JKqorutHXjhPozw197trNdT61mfuyEBSwYgsBv9vNSk189kSEYypvol&id=100001498612711' },
{ initial: '劉', name: '劉采蓉', attr: '30多歲・留學生', text: '裡面結合了「安中散」(針對胃痛、胃酸過多)以及「芍藥甘草湯」(偏鎮痛作用),整體是比較溫和的調理型胃藥。', date: '2026.03', color: '#9C27B0', snsUrl: 'https://www.facebook.com/teresa.liu.1293/posts/pfbid09ukmjszJhKUuMKEdoPNAo5Qz9wpjXtjN9kidRJ5cpnpRQs2JUNyykRFkYSf9eWZGl' },
{ initial: 'P', name: 'purple', attr: '30多歲・上班族', text: '最喜歡的是它的微粒設計,顆粒非常細,小小的很好入口,也很容易溶於水。', date: '2026.03', color: '#3F51B5', snsUrl: 'https://www.instagram.com/p/DVk6NJvmWOu/?img_index=1' },
{ initial: 'S', name: 'Sharon Hsieh', attr: '20多歲・上班族', text: '最近開始養成一個習慣—— 出國或回台灣一定會帶胃藥。', date: '2026.03', color: '#009688', snsUrl: 'https://www.facebook.com/sharonxhsieh/posts/pfbid02CMHbUCU9sm7cG5pFfBS6suNG1CRewaphiA58r61JT3JJmqwMvQ7y8Z6GqwqCUCp7l' },
{ initial: '花', name: '花森米米', attr: '30多歲・自由工作者', text: '獨立包裝,隨身攜帶方便,在外如果突然胃不舒服,就能馬上吃一包', date: '2026.03', color: '#FF5722', snsUrl: 'https://www.instagram.com/p/DV5MYIhEkKm/?img_index=1' }
], voiceCount: 5
}
]
},
health: {
title: '健康食品・食品',
products: [
{
id: 22, slug: 'naishidown-visceral-fat', name: 'NAISHI-DOWN減脂錠', brand: '井藤漢方製藥',
price: 1980, priceNote: '60粒 ¥1,980',
image: 'https://www.japankuru.com/gld-kanri/data/uploads/2026/03/naishidown-ito-kampo-visceral-fat-supplement.jpg',
label: 'type-hot', labelText: '話題', plan: 'gold',
originalUrl: 'https://www.itohkampo.co.jp/products/101140039.html',
tip: '井藤漢方「NAISHI-DOWN減脂錠」為一款採用黑薑由來多甲氧基黃酮(PMF)為關鍵成分的日本機能性表示食品。具備有助於BMI偏高者輔助減少腹部脂肪的機能性。',
tipFull: '井藤漢方「NAISHI-DOWN減脂錠」為一款採用黑薑由來多甲氧基黃酮(PMF)為關鍵成分的日本機能性表示食品。黑薑由來的多甲氧基黃酮,在日本有研究報告指出,具備「有助於BMI偏高者輔助減少腹部脂肪(包含內臟脂肪與皮下脂肪)」的機能性。同時,也有報告指出在日常生活的基礎能量代謝下,幫助脂肪更有效率被消耗。每日建議攝取兩粒。草本氣味較弱,適合作為飲食控制期間的日常代謝輔助選擇。',
column: 'https://www.japankuru.com/tw/shopping/263542/', hasVideo: true, videoId: 'i2f4VD2aeVs',
voices: [
{ initial: '新', name: '新日一成', attr: '40多歲・個人創業者', text: '對像我這種 BMI大概24以上、開始擔心肚子越來越大的中年族群,確實會比較有感覺', date: '2026.03', color: '#E91E63', snsUrl: 'https://www.facebook.com/hu.wei.7/posts/pfbid0XzgFB6A6q2rUkE7rXSBuYYYN7fYZvNWYqojqrp25jnsSkjhNXPV67cYKVYvtE8HYl' },
{ initial: 'K', name: 'Kobayashi Celine', attr: '40多歲・自由工作者', text: '很適合BMI24以上未滿30,在意體態與健康數值的人。', date: '2026.03', color: '#9C27B0', snsUrl: 'https://www.instagram.com/p/DV7X9uzD5uq/?igsh=MWgwa2p4OHZwMWhtNA%3D%3D&img_index=1' },
{ initial: '花', name: '花森米米', attr: '30多歲・自由工作者', text: '這款在日本藥妝店一直很有討論度的內脂輕,真的很適合像我們這種生活忙碌、沒時間(懶得)運動的人', date: '2026.03', color: '#3F51B5', snsUrl: 'https://www.instagram.com/p/DV5MsQwkjrK/?img_index=1' },
{ initial: 'A', name: 'Aya Mikazuki', attr: '30多歲・上班族', text: '最近開始更在意體態跟健康數值,發現其實「日常生活」也可以成為管理的一部分', date: '2026.03', color: '#009688', snsUrl: 'https://www.facebook.com/vminqi/posts/pfbid021mkEcYvhezJeCkuCabH8mm2jCSbRxoLx3wBZU6tkNU5nfCoGXK77yDh8f3QbNoRql' },
{ initial: '優', name: '優妮帶你遊大阪不踩雷', attr: '30多歲・上班族', text: '2月跟妹妹暢遊九州一路大吃,回到日常照鏡子,我真的開始在意腹部線條+健康數值…所以最近把井藤漢方製藥內脂輕加進我的日常保養清單。', date: '2026.03', color: '#FF5722', snsUrl: 'https://www.instagram.com/p/DVU_IsDkh7a/?img_index=1' }
], voiceCount: 5
},
{
id: 24, slug: 'lipovitan-dx', name: '力保美達DX(リポビタンDX)', brand: '大正製藥',
price: 1650, priceNote: '30錠 ¥1,650 / 90錠 ¥4,268 / 180錠 ¥6,468 / 270錠 ¥8,668',
image: 'https://www.japankuru.com/gld-kanri/data/uploads/2026/03/lipovitan-dx-man-holding-window.jpg',
label: 'type-hot', labelText: '話題', plan: 'basic',
originalUrl: 'https://www.taisho-direct.jp/simages/lp/adfm/LDXA.html',
tip: '大正製藥-Lipovitan力保美達DX,日本元氣補充飲的錠劑版本。含牛磺酸500mg+維生素B群+助眠胺基酸「甘胺酸」,抗疲勞同時輔助改善淺眠等狀況。指定医薬部外品。',
tipFull: '日本元氣補充飲系列的錠劑版本。改善疲勞同時兼顧睡眠情況。\n\n誕生於1960年代的力保美達,堪稱是日本元氣補充飲的先鋒,至今仍有許多日本上班族習慣「喝了再上」。力保美達的靈魂核心成分「牛磺酸」是胺基酸的一種,廣為人知的消除疲勞作用成分。\n\n錠劑版本的「力保美達DX」,是近幾年異軍突起的抗疲B群人氣新選擇。每日建議攝取的3粒當中,不僅含有500毫克的牛磺酸和維生素B群,還搭配助眠系胺基酸「甘胺酸」,超級適合忙碌的現代人用來抵抗疲勞,同時輔助隨年齡增加而出現的難以入睡、淺眠或不易醒來等狀況。\n\n名稱:LIPOVITAN DX\n醫藥分類:指定医薬部外品\n效能、效果:恢復及預防疲勞/改善難以入睡・淺睡・難以睡醒/維持及改善體力、身體抵抗力及集中力\n※:使用前請詳閱說明書並依指示之適應症與用法用量使用。',
tipFull: '誕生於1960年代的力保美達,堪稱是日本元氣補充飲的先鋒,至今仍有許多日本上班族習慣「喝了再上」。力保美達的靈魂核心成分「牛磺酸」是胺基酸的一種,廣為人知的消除疲勞作用成分。\n錠劑版本的「力保美達DX」,是近幾年異軍突起的抗疲B群人氣新選擇。每日建議攝取的3粒當中,不僅含有500毫克的牛磺酸和維生素B群,還搭配助眠系胺基酸「甘胺酸」,超級適合忙碌的現代人用來抵抗疲勞,同時輔助隨年齡增加而出現的難以入睡、淺眠或不易醒來等狀況。\n\n名稱:LIPOVITAN DX\n醫藥分類:指定医薬部外品\n效能、效果:恢復及預防疲勞/改善難以入睡・淺睡・難以睡醒/維持及改善體力、身體抵抗力及集中力\n※:使用前請詳閱說明書並依指示之適應症與用法用量使用。',
column: null, hasVideo: false,
voices: [
{ initial: '林', name: '林桑的日本遊記', attr: '40多歲・上班族', text: '這款是日本大正製藥的產品,在日本藥妝店其實滿常看到的!', date: '2026.03', color: '#E91E63', snsUrl: 'https://www.instagram.com/p/DV54EL0EuHH/?img_index=1' },
{ initial: '優', name: '優妮帶你遊大阪不踩雷', attr: '30多歲・上班族', text: '它沒咖啡因,加上睡眠支持成分グリシン、以及生藥シゴカ,所以我最常是「晚餐後~睡前」那段時間吃', date: '2026.03', color: '#9C27B0', snsUrl: 'https://www.instagram.com/p/DVU6niYEi4V/?img_index=1' },
{ initial: '劉', name: '劉采蓉', attr: '30多歲・留學生', text: '我自己是在覺得有點累、或是壓力比較大、比較忙的時候會吃', date: '2026.03', color: '#3F51B5', snsUrl: 'https://www.facebook.com/teresa.liu.1293/posts/pfbid0zpGbKmihEmwSD4TSVE6Cqi7Zmb8hGt3nf36QMmoF3UAwRM92Z6ZSFtaTNyAZvpBql' },
{ initial: 'S', name: 'Shanyu Lin', attr: '40多歲・家庭主婦', text: '同時改善睡眠問題,感覺根本就是我現在狀況設計的救星。', date: '2026.03', color: '#009688', snsUrl: 'https://www.facebook.com/sacuralin/posts/pfbid02dJYFqBrcUBvnDoey24oD1prWWecrBedDWbEGYtZuSxPzQYfqNbwEBt5CggoRYiNLl' },
{ initial: 'P', name: 'purple', attr: '30多歲・上班族', text: '我自己蠻喜歡的一點是它沒有咖啡因☕️❌ 所以就算是睡前也可以吃,不用擔心影響睡眠。', date: '2026.03', color: '#FF5722', snsUrl: 'https://www.instagram.com/p/DV8K6MombB5/?img_index=1' }
], voiceCount: 5
}
]
},
daily: {
title: '日用品',
products: [
{
id: 30, slug: 'pelack-t-throat', name: 'PELACK-T喉嚨消炎錠a', brand: '第一三共',
price: 1430, priceNote: '18錠 ¥1,430 / 36錠 ¥2,640 / 54錠 ¥3,410',
image: 'https://www.japankuru.com/gld-kanri/data/uploads/2026/03/pelack-T3.png',
label: 'type-exclusive', labelText: '日本限定', plan: 'gold',
originalUrl: 'https://www.daiichisankyo-hc.co.jp/site_pelack/',
tip: 'PELACK-T喉嚨消炎錠a為日本第三類醫藥品,主成分傳明酸(Tranexamic Acid)可透過抑制纖維蛋白溶解反應,降低發炎相關物質活性,協助改善喉嚨紅腫與疼痛不適。建議於症狀初期使用,有助於控制不適感。除喉嚨疼痛外,也可作為口內炎期間的輔助對症用藥。',
tipFull: 'PELACK-T喉嚨消炎錠a為日本第三類醫藥品,主成分傳明酸(Tranexamic Acid)可透過抑制纖維蛋白溶解反應,降低發炎相關物質活性,協助改善喉嚨紅腫與疼痛不適。建議於症狀初期使用,有助於控制不適感。除喉嚨疼痛外,也可作為口內炎期間的輔助對症用藥。\n※:使用前請詳閱說明書並依指示之適應症與用法用量使用。',
column: 'https://www.japankuru.com/tw/shopping/264456/', hasVideo: true, videoId: '41SH1U8NWH8',
voices: [
{ initial: '劉', name: '劉采蓉', attr: '30多歲・留學生', text: '對於需要長時間講話、或是喉嚨容易反覆不舒服的人來說,真的蠻實用的', date: '2026.03', color: '#009688', snsUrl: 'https://www.facebook.com/teresa.liu.1293/posts/pfbid0givUT7EP7QLWkFTW4e8aQ8696Ms1PNvEARQnds9WnbFMBFrai6upXhQhSZ9SVvRl' },
{ initial: '青', name: '青醬的日本小確幸', attr: '40多歲・上班族', text: '這款在日本算是知名度很高的喉嚨藥,很多人只要覺得「喉嚨怪怪的」,就會先吃。', date: '2026.03', color: '#4CAF50', snsUrl: 'https://www.facebook.com/chinchaninjp/posts/pfbid0Gy5KviNi4fT48Ghew3NemnGabWbLFN3C1cKZd7HviUSMeL79VekTyx2FsAx79diQl' },
{ initial: 'H', name: 'HimiKo', attr: '20多歲・自由工作者', text: '是許多需要頻繁用嗓音工作者的護身符♪', date: '2026.03', color: '#E91E63', snsUrl: 'https://www.instagram.com/p/DWE8pMTAXn2/?img_index=1' },
{ initial: 'W', name: 'Wei Wei', attr: '30多歲・上班族', text: '這款在旅遊圈被封為「喉嚨痛神藥」真的不是開玩笑', date: '2026.03', color: '#9C27B0', snsUrl: 'https://www.facebook.com/permalink.php?story_fbid=pfbid034dxkuKTKXHqMpSkihYcV9hbU8YzV37nnmfs1nsUW64L46kX46p8ey49hL32Bk7ttl&id=100001466739903' },
{ initial: 'フ', name: 'ファン ナwナ', attr: '40多歲・上班族', text: '不含容易讓人想睡的成分,白天要上班或外出時吃也比較安心', date: '2026.03', color: '#3F51B5', snsUrl: 'https://www.instagram.com/p/DVnbtNcEqMS/?igsh=MXRpdWRieTcwenl5cg%3D%3D' },
{ initial: 'Y', name: 'Yu Shan', attr: '40多歲・上班族', text: '最近喉嚨乾乾又有點痛,吃了之後真的有明顯緩解', date: '2026.03', color: '#FF5722', snsUrl: 'https://www.instagram.com/p/DWOOZVokVXZ/?img_index=1' },
{ initial: '呂', name: '呂明怡', attr: '20多歲・上班族', text: '有時候換季、講話太多,或是感覺喉嚨開始乾乾痛痛的時候,我就會想到它', date: '2026.03', color: '#795548', snsUrl: 'https://www.facebook.com/permalink.php?story_fbid=pfbid0MdUXQAhgKAhCgtc6D3bd9f7GFxa3dfeBbMr5GXZAgAKrMCgYpyt6hit7T6oM8AFNl&id=100002589505586' },
{ initial: '花', name: '花森米米', attr: '30多歲・自由工作者', text: '如果有喉嚨不舒服或容易嘴破的困擾,有來日本逛藥妝時也可以參考看看', date: '2026.03', color: '#607D8B', snsUrl: 'https://www.instagram.com/p/DVsxPd6kgIF/' },
{ initial: 'B', name: 'BBQ in Japan', attr: '40多歲・個人創業者', text: '不知道實際效果如果,下次喉嚨開始不妙時來試看看', date: '2026.03', color: '#FF9800', snsUrl: 'https://www.facebook.com/BBQinJP/posts/pfbid0UiDRZdu9kTD6LVtCSYMPKVCnWXPXCfWder2vnN25Dj1kWk5CMfeQgwFHFAhSkiUZl' },
{ initial: '廖', name: '廖小白', attr: '40多歲・上班族', text: '有時候口腔破,除了貼布,直接口服是比較快的', date: '2026.03', color: '#2196F3', snsUrl: 'https://www.facebook.com/100000142974546/posts/27152243391030393/?mibextid=wwXIfr&rdid=xdupk6r98viWkSGw#' }
], voiceCount: 10
},
{
id: 31, slug: 'traful-mouth-patch', name: 'TRAFUL口內炎貼片a', brand: '第一三共',
price: 1485, priceNote: '12片 ¥1,485 / 24片 ¥2,200',
image: 'https://www.japankuru.com/gld-kanri/data/uploads/2026/03/81rSZNyHgL._AC_SY879_.jpg',
label: 'type-hot', labelText: '話題', plan: 'gold',
originalUrl: 'https://www.daiichisankyo-hc.co.jp/site_traful/',
tip: '第一三共HealthCare「TRAFUL口內炎貼片a」為日本熱銷對症用藥,專為復發性口內炎設計。0.16mm極薄貼片可直接貼附患部形成保護層,減少摩擦刺激,並釋放主要成分曲安奈德。約30~60分鐘自然溶解,無須撕除。輕巧好攜帶,適合復發性口內炎(嘴破)時備用。',
tipFull: '第一三共HealthCare「TRAFUL口內炎貼片a」為日本熱銷對症用藥,專為復發性口內炎設計。0.16mm極薄貼片可直接貼附患部形成保護層,減少摩擦刺激,並釋放主要成分曲安奈德。約30~60分鐘自然溶解,無須撕除。輕巧好攜帶,適合復發性口內炎(嘴破)時備用。\n※:使用前請詳閱說明書並依指示之適應症與用法用量使用。',
column: 'https://www.japankuru.com/tw/shopping/264744/', hasVideo: true, videoId: 'b3h2Ybw2BW4',
voices: [
{ initial: '呂', name: '呂明怡', attr: '20多歲・上班族', text: 'Traful 的口內炎貼片,會慢慢自己溶解,不需要特別撕下來', date: '2026.03', color: '#795548', snsUrl: 'https://www.facebook.com/permalink.php?story_fbid=pfbid0MdUXQAhgKAhCgtc6D3bd9f7GFxa3dfeBbMr5GXZAgAKrMCgYpyt6hit7T6oM8AFNl&id=100002589505586' },
{ initial: '花', name: '花森米米', attr: '30多歲・自由工作者', text: '以前都用塗藥的方式,改用這款之後只要貼一下就好~', date: '2026.03', color: '#607D8B', snsUrl: 'https://www.instagram.com/p/DVsxPd6kgIF/' },
{ initial: 'H', name: 'HimiKo', attr: '20多歲・自由工作者', text: '貼上後大約30分~1小時就會自動溶解在口中,非常方便!', date: '2026.03', color: '#E91E63', snsUrl: 'https://www.instagram.com/p/DWE8pMTAXn2/?img_index=1' },
{ initial: 'W', name: 'Wei Wei', attr: '30多歲・上班族', text: '最方便的是它貼上去後會慢慢融化,不用擔心還要撕下來', date: '2026.03', color: '#9C27B0', snsUrl: 'https://www.facebook.com/permalink.php?story_fbid=pfbid034dxkuKTKXHqMpSkihYcV9hbU8YzV37nnmfs1nsUW64L46kX46p8ey49hL32Bk7ttl&id=100001466739903' },
{ initial: 'フ', name: 'ファン ナwナ', attr: '40多歲・上班族', text: '貼片薄薄一片貼在患處,幾乎沒有什麼存在感', date: '2026.03', color: '#3F51B5', snsUrl: 'https://www.instagram.com/p/DVnbtNcEqMS/?igsh=MXRpdWRieTcwenl5cg%3D%3D' },
{ initial: '劉', name: '劉采蓉', attr: '30多歲・留學生', text: '口內炎吃東西會痛、講話會摩擦到,真的很困擾的時候,這種貼片型產品就很方便。', date: '2026.03', color: '#009688', snsUrl: 'https://www.facebook.com/teresa.liu.1293/posts/pfbid0givUT7EP7QLWkFTW4e8aQ8696Ms1PNvEARQnds9WnbFMBFrai6upXhQhSZ9SVvRl' },
{ initial: 'Y', name: 'Yu Shan', attr: '40多歲・上班族', text: '貼片型真的超方便,貼上後會慢慢溶解,不需要一直撕來撕去', date: '2026.03', color: '#FF5722', snsUrl: 'https://www.instagram.com/p/DWOOZVokVXZ/?img_index=1' },
{ initial: '青', name: '青醬的日本小確幸', attr: '40多歲・上班族', text: '一累就嘴破、或很容易咬到自己的人,這款真的可以先筆記。', date: '2026.03', color: '#4CAF50', snsUrl: 'https://www.facebook.com/chinchaninjp/posts/pfbid0Gy5KviNi4fT48Ghew3NemnGabWbLFN3C1cKZd7HviUSMeL79VekTyx2FsAx79diQl' },
{ initial: 'B', name: 'BBQ in Japan', attr: '40多歲・個人創業者', text: '好處是會溶於你口,不用怕睡一覺起來後發現吞下去了!', date: '2026.03', color: '#FF9800', snsUrl: 'https://www.facebook.com/BBQinJP/posts/pfbid0UiDRZdu9kTD6LVtCSYMPKVCnWXPXCfWder2vnN25Dj1kWk5CMfeQgwFHFAhSkiUZl' },
{ initial: '廖', name: '廖小白', attr: '40多歲・上班族', text: '有這個口內炎貼布,貼著吃東西,完全可以放心吃', date: '2026.03', color: '#2196F3', snsUrl: 'https://www.facebook.com/100000142974546/posts/27152243391030393/?mibextid=wwXIfr&rdid=xdupk6r98viWkSGw#' }
], voiceCount: 10
},
{
id: 32, slug: 'loxonin-ex-tape', name: 'LOXONIN樂松EX貼布(ロキソニンEXテープ)', brand: '第一三共',
price: 1408, priceNote: '7片 ¥1,408 / 14片 ¥2,178 / 21片 ¥2,948',
image: 'https://www.japankuru.com/gld-kanri/data/uploads/2026/03/loxonin_portrait_under_1mb.jpg',
label: 'type-exclusive', labelText: '日本限定', plan: 'gold',
originalUrl: 'https://www.daiichisankyo-hc.co.jp/site_loxonin-s/gaiyou/',
tip: '樂松EX貼布,日本製藥大廠研發,含洛索洛芬鈉水合物8.1%,為系列最高濃度。適用於腰痛、肩頸痠痛、關節痛與肌肉拉傷等不適。貼布輕薄服貼、不易脫落,並添加維生素E與L-薄荷醇,使用方便。請依說明書指示正確使用。',
tipFull: '樂松EX貼布,日本製藥大廠研發,含洛索洛芬鈉水合物8.1%,為系列最高濃度。適用於腰痛、肩頸痠痛、關節痛與肌肉拉傷等不適。貼布輕薄服貼、不易脫落,並添加維生素E與L-薄荷醇,使用方便。\n※:使用前請詳閱說明書並依指示之適應症與用法用量使用。',
column: 'https://www.japankuru.com/tw/shopping/264791/', hasVideo: false,
voices: [
{ initial: 'Y', name: 'Yu Shan', attr: '40多歲・上班族', text: '這款是醫療級的痠痛貼布,止痛成分濃度高,貼上後真的很有感', date: '2026.03', color: '#FF5722', snsUrl: 'https://www.instagram.com/p/DWONsWREfDX/?img_index=1' },
{ initial: '廖', name: '廖小白', attr: '40多歲・上班族', text: '日本同事挫傷去醫院,醫師就是開Loxonin EX貼布給他!', date: '2026.03', color: '#2196F3', snsUrl: 'https://www.facebook.com/permalink.php?story_fbid=pfbid0uAxutCadifhTYW45h7LF21gZMF5vZ62HXLQA3W8WgpKivAEgGRXpQgrr58q8Hpwbl&id=100000142974546' },
{ initial: 'H', name: 'HimiKo', attr: '20多歲・自由工作者', text: '含有與處方藥同級的止痛成分洛索洛芬鈉,針對肩膀僵硬、腰痛、小腿痠痛效果極佳', date: '2026.03', color: '#E91E63', snsUrl: 'https://www.instagram.com/p/DWCQnXmga10/?img_index=1' },
{ initial: 'W', name: 'Wei Wei', attr: '30多歲・上班族', text: '自己覺得蠻不錯的一點是,它的味道其實很淡,不像有些痠痛貼布會有很重的藥味', date: '2026.03', color: '#9C27B0', snsUrl: 'https://www.facebook.com/permalink.php?story_fbid=pfbid02W2fKVWxL1xEHaqVpP2WxbGK8gBtyao18quDnkhzqBjxpfpVLkSfbpPJfAMSaAUr5l&id=100001466739903' },
{ initial: 'フ', name: 'ファン ナwナ', attr: '40多歲・上班族', text: '貼著活動時比較不會有很明顯的存在感,難怪在日本一直都很受歡迎', date: '2026.03', color: '#3F51B5', snsUrl: 'https://www.instagram.com/p/DVnWrIfEuNa/' },
{ initial: '劉', name: '劉采蓉', attr: '30多歲・留學生', text: '由第一三共研發,原本就是醫院臨床使用的成分,因此效果一直很受到信賴', date: '2026.03', color: '#009688', snsUrl: 'https://www.facebook.com/teresa.liu.1293/posts/pfbid02og544RVfHZ3gCtWegjLraKU2a2DgqECWK7tFsTUsZTdjYG7rVX4qtxRioFtwNG6Ql' },
{ initial: '呂', name: '呂明怡', attr: '20多歲・上班族', text: '貼布本身也蠻薄的,黏性剛剛好,睡覺貼著也不太會掉', date: '2026.03', color: '#795548', snsUrl: 'https://www.facebook.com/permalink.php?story_fbid=pfbid0dQsg4vtbufWayhw173kesuvpV24NLheJWj8YucaZJFZHJNZ69phetJYo7jfctadol&id=100002589505586' },
{ initial: '花', name: '花森米米', attr: '30多歲・自由工作者', text: '像我平常如果有腰酸、肩頸不舒服,就會貼一下放鬆舒緩', date: '2026.03', color: '#607D8B', snsUrl: 'https://www.instagram.com/p/DVsqd7Xklwp/' },
{ initial: '青', name: '青醬的日本小確幸', attr: '40多歲・上班族', text: '去年因為手腕關節炎去醫院治療,那時醫生開給我的貼布就是這家品牌', date: '2026.03', color: '#4CAF50', snsUrl: 'https://www.facebook.com/chinchaninjp/posts/1719113232402175?ref=embed_post' },
{ initial: 'B', name: 'BBQ in Japan', attr: '40多歲・個人創業者', text: '這個成分的貼布能真正的抑制深層的酸痛,並且不會涼到睡不著', date: '2026.03', color: '#FF9800', snsUrl: 'https://www.facebook.com/BBQinJP/posts/pfbid08dhyHMXChtkoue5gsoxytadiTidvCcHCeK2kGTsA82uxWMsHvtF1kigX1XTNDUh6l' }
], voiceCount: 10
},
{
id: 33, slug: 'transino-white-c-premium', name: '傳皙諾TRANSINO WHITE C PREMIUM(トランシーノホワイトCプレミアム)', brand: '第一三共',
price: 2310, priceNote: '90錠 ¥2,310 / 180錠 ¥3,520 / 270錠 ¥4,840',
image: 'https://www.japankuru.com/gld-kanri/data/uploads/2026/03/01-Transino-white-C-premium-0318-scaled.jpg',
label: 'type-hot', labelText: '話題', plan: 'gold',
originalUrl: 'https://www.daiichisankyo-hc.co.jp/site_transino/',
tip: '傳皙諾TRANSINO WHITE C PREMIUM是日本人氣美白錠,主打 L-半胱胺酸與維生素C 雙核心成分,搭配五種美肌支持維生素,輔助抑制黑色素、協助促進肌膚代謝與抗氧化。適合想改善斑點、雀斑及日曬色素沉澱者,每日依指示服用,搭配日常保養,成為美肌輕鬆補給的好選擇。',
tipFull: '傳皙諾TRANSINO WHITE C PREMIUM是日本人氣美白錠,主打 L-半胱胺酸與維生素C 雙核心成分,搭配五種美肌支持維生素,輔助抑制黑色素、協助促進肌膚代謝與抗氧化。適合想改善斑點、雀斑及日曬色素沉澱者,每日依指示服用,搭配日常保養,成為美肌輕鬆補給的好選擇。\n※:使用前請詳閱說明書並依指示之適應症與用法用量使用。',
column: 'https://www.japankuru.com/tw/shopping/264796/', hasVideo: false,
voices: [
{ initial: 'フ', name: 'ファン ナwナ', attr: '40多歲・上班族', text: '這系列在日本真的很常看到,不只是觀光客會買,其實很多日本人也會長期補充', date: '2026.03', color: '#3F51B5', snsUrl: 'https://www.instagram.com/p/DVnWrIfEuNa/' },
{ initial: '劉', name: '劉采蓉', attr: '30多歲・留學生', text: '如果平常有在關注日本藥妝的人,應該對這款不陌生。', date: '2026.03', color: '#009688', snsUrl: 'https://www.facebook.com/teresa.liu.1293/posts/pfbid02og544RVfHZ3gCtWegjLraKU2a2DgqECWK7tFsTUsZTdjYG7rVX4qtxRioFtwNG6Ql' },
{ initial: 'H', name: 'HimiKo', attr: '20多歲・自由工作者', text: '如果想要擁有日本女生那種透明感肌膚,除了外擦,平時內服的補給保養也是關鍵!', date: '2026.03', color: '#E91E63', snsUrl: 'https://www.instagram.com/p/DWCQnXmga10/?img_index=1' },
{ initial: 'W', name: 'Wei Wei', attr: '30多歲・上班族', text: '由內而外的調理也很重要。這款算是日本開架美白錠裡面比較高階的版本', date: '2026.03', color: '#9C27B0', snsUrl: 'https://www.facebook.com/permalink.php?story_fbid=pfbid02W2fKVWxL1xEHaqVpP2WxbGK8gBtyao18quDnkhzqBjxpfpVLkSfbpPJfAMSaAUr5l&id=100001466739903' },
{ initial: 'Y', name: 'Yu Shan', attr: '40多歲・上班族', text: '它含有日本醫藥級、最高規格的L-半胱胺酸(240mg),再加上2000mg的維他命C', date: '2026.03', color: '#FF5722', snsUrl: 'https://www.instagram.com/p/DWONsWREfDX/?img_index=1' },
{ initial: '呂', name: '呂明怡', attr: '20多歲・上班族', text: '這款在日本算是很有名的美白維他命,維生素C含量很高', date: '2026.03', color: '#795548', snsUrl: 'https://www.facebook.com/permalink.php?story_fbid=pfbid0dQsg4vtbufWayhw173kesuvpV24NLheJWj8YucaZJFZHJNZ69phetJYo7jfctadol&id=100002589505586' },
{ initial: '花', name: '花森米米', attr: '30多歲・自由工作者', text: '這款美白錠在日本很有人氣!是日本知名製藥公司第一三共的品牌', date: '2026.03', color: '#607D8B', snsUrl: 'https://www.instagram.com/p/DVsqd7Xklwp/' },
{ initial: '青', name: '青醬的日本小確幸', attr: '40多歲・上班族', text: '這款也是日本藥妝店很常看到的熱銷商品', date: '2026.03', color: '#4CAF50', snsUrl: 'https://www.facebook.com/chinchaninjp/posts/1719113232402175?ref=embed_post' },
{ initial: 'B', name: 'BBQ in Japan', attr: '40多歲・個人創業者', text: '效果怎樣我不太清楚,不過有買過的老婆覺得效果還可以', date: '2026.03', color: '#FF9800', snsUrl: 'https://www.facebook.com/BBQinJP/posts/pfbid08dhyHMXChtkoue5gsoxytadiTidvCcHCeK2kGTsA82uxWMsHvtF1kigX1XTNDUh6l' },
{ initial: '廖', name: '廖小白', attr: '40多歲・上班族', text: '第一三共是日本藥妝大公司,對於日常生活所需的產品非常重視', date: '2026.03', color: '#2196F3', snsUrl: 'https://www.facebook.com/permalink.php?story_fbid=pfbid0uAxutCadifhTYW45h7LF21gZMF5vZ62HXLQA3W8WgpKivAEgGRXpQgrr58q8Hpwbl&id=100000142974546' }
], voiceCount: 10
}
]
}
};
let myList = JSON.parse(localStorage.getItem('cheGuide2026') || '[]');
let currentTab = 'cosme';
function renderTabs() {
const container = document.getElementById('tabContents');
if (!container) return; // 카테고리 레이아웃으로 교체됨
container.innerHTML = '';
Object.keys(tabData).forEach(function(key) {
const data = tabData[key];
const isActive = key === currentTab;
let productsHtml = data.products.map(function(p) { return renderProduct(p); }).join('');
container.innerHTML += '';
});
}
function renderProduct(p) {
const isInList = myList.includes(p.id);
const isBasicPlan = p.plan === 'basic';
let avatars = '';
if (p.voices) {
avatars = p.voices.slice(0, 5).map(function(v) {
return '' + v.initial + '';
}).join('');
}
const hasVideoClass = p.hasVideo ? 'item-thumb-video' : '';
const videoOverlay = p.hasVideo ? '' : '';
const basicPlanClass = '';
let html = '';
html += '';
html += '

';
if (p.label) html += '
' + p.labelText + '';
html += videoOverlay;
html += '
';
if (p.hasVideo) html += ' 影片';
if (p.column) html += ' 文章';
html += '
';
html += '
';
html += '
';
html += '';
html += '
' + p.name + '
';
html += '
¥' + p.price.toLocaleString() + '';
if (p.labelText) html += '' + p.labelText + '';
html += '
';
html += '
';
html += '';
html += '
' + (p.tipFull || p.tip) + '
';
html += '
';
// Column preview for plans with column (standard, gold, platinum)
if (p.column) {
html += '
';
html += '世彬老師專欄';
html += '「' + p.name + '」徹底評測!';
html += '›';
html += '';
// Voice preview for plans with column - show 2 reviews on card
if (p.voices && p.voices.length > 0) {
html += '
';
html += '';
p.voices.slice(0, 2).forEach(function(v) {
html += '
';
html += '
';
html += '
' + v.initial + '
';
html += '
' + v.name + '';
html += '
' + v.attr + '';
html += '
';
html += '
' + v.text + '
';
html += '
';
});
html += '
';
}
}
if (p.voices && p.voices.length > 0) {
html += '
' + avatars + '
';
html += '
體驗評價 ' + p.voiceCount + '則';
html += '
';
}
// Original URL link - REMOVED from card, moved to modal
html += '';
html += '
';
html += '';
html += '';
return html;
}
function getSnsIcon(url) {
if (!url) return '';
if (url.includes('instagram.com')) return '';
if (url.includes('facebook.com')) return '';
if (url.includes('twitter.com') || url.includes('x.com')) return '';
if (url.includes('youtube.com')) return '';
if (url.includes('tiktok.com')) return '';
return '';
}
function shareItem(title) {
if (navigator.share) {
navigator.share({ title: title, url: location.href });
} else {
navigator.clipboard.writeText(location.href);
showToast('已複製連結!');
}
}
function handleCardClick(id, event) {
openDetailModal(id);
}
function toggleCardExpand(btn, event) {
event.stopPropagation();
const card = btn.closest('.card');
card.classList.toggle('expanded');
}
function switchTab(tab) {
if (!document.querySelector('.tab-btn')) return;
currentTab = tab;
document.querySelectorAll('.tab-btn').forEach(function(btn) { btn.classList.remove('active'); });
var activeBtn = document.querySelector('[data-tab="' + tab + '"]');
if (activeBtn) activeBtn.classList.add('active');
document.querySelectorAll('.tab-content').forEach(function(content) { content.classList.remove('active'); });
var tabEl = document.getElementById('tab-' + tab);
if (tabEl) tabEl.classList.add('active');
}
function getAllProducts() {
let all = [];
Object.values(tabData).forEach(function(t) { all = all.concat(t.products); });
return all;
}
function scrollToProduct(id) {
// 상품 카드로 스크롤 → 하이라이트
var cardEl = document.querySelector('.card[data-id="' + id + '"]');
if (cardEl) {
var offset = 100;
var top = cardEl.getBoundingClientRect().top + window.pageYOffset - offset;
window.scrollTo({ top: top, behavior: 'smooth' });
// 하이라이트
cardEl.classList.add('card-highlight');
setTimeout(function() { cardEl.classList.remove('card-highlight'); }, 2000);
} else {
// 카드 없으면 모달 (플레이스홀더 등)
openDetailModal(id);
}
}
function openDetailModal(id) {
const all = getAllProducts();
const p = all.find(function(x) { return x.id === id; });
if (!p) return;
// GA4 product click event
try {
if (typeof gtag === 'function') {
gtag('event', 'product_click', {
product_id: p.id,
product_name: p.name,
product_brand: p.brand || '',
product_slug: p.slug || ''
});
}
} catch(e) {}
// Set URL parameter with slug
const url = new URL(window.location.href);
url.searchParams.set('product', p.slug);
try { window.history.replaceState({}, '', url); } catch(e) {}
isMobile() ? openBottomSheet(p) : openPcModal(p);
}
function openPcModal(p) {
const modal = document.getElementById('detailModal');
const visual = document.getElementById('modalVisual');
if (p.hasVideo && p.videoId) {
visual.classList.add('has-video');
visual.innerHTML = '';
} else {
visual.classList.remove('has-video');
visual.innerHTML = '
';
}
// 카드 앞면 .ci에도 has-video 클래스 토글
const cardEl = document.querySelector('.card[data-id="' + p.id + '"]');
if (cardEl) {
const ciEl = cardEl.querySelector('.ci');
if (ciEl) {
if (p.hasVideo) ciEl.classList.add('has-video');
else ciEl.classList.remove('has-video');
}
}
document.getElementById('modalName').textContent = p.name;
document.getElementById('modalPrice').textContent = '¥' + p.price.toLocaleString();
const modalTipText = p.tipFull || p.tip || '';
const modalDisc = '※:使用前請詳閱說明書並依指示之適應症與用法用量使用。';
document.getElementById('modalTip').innerHTML = modalTipText.includes('※') ? modalTipText : modalTipText + '
' + modalDisc + '';
const voicesDiv = document.getElementById('modalVoices');
const voiceList = document.getElementById('modalVoiceList');
if (p.voices && p.voices.length > 0) {
voicesDiv.style.display = 'block';
document.getElementById('modalVoiceCount').textContent = p.voiceCount + '則';
voiceList.innerHTML = p.voices.map(function(v) {
return '' + v.initial + '
' + v.name + '
' + v.attr + '
' + v.text + '
';
}).join('');
} else {
voicesDiv.style.display = 'none';
}
const ctaBtn = document.getElementById('modalCta');
if (p.column) {
ctaBtn.href = p.column;
ctaBtn.style.display = 'block';
} else {
ctaBtn.style.display = 'none';
}
// Set official URL
const officialBtn = document.getElementById('modalOfficialBtn');
if (p.originalUrl) {
officialBtn.href = p.originalUrl;
officialBtn.style.display = 'flex';
} else {
officialBtn.style.display = 'none';
}
currentModalId = p.id;
updateModalHeartBtn();
modal.classList.add('active');
}
function openBottomSheet(p) {
const visual = document.getElementById('bsVisual');
// 영상 없는 사진 전용 상품은 이미지 영역 축소
const compactIds = [4, 5, 23, 24, 25, 32, 33];
if (compactIds.includes(p.id)) {
visual.classList.add('compact-visual');
} else {
visual.classList.remove('compact-visual');
}
if (p.hasVideo && p.videoId) {
visual.classList.add('has-video');
visual.innerHTML = '';
} else {
visual.classList.remove('has-video');
visual.innerHTML = '
';
}
document.getElementById('bsName').textContent = p.name;
document.getElementById('bsPrice').textContent = '¥' + p.price.toLocaleString();
const tipText = p.tipFull || p.tip || '';
const bsDisc = '※:使用前請詳閱說明書並依指示之適應症與用法用量使用。';
document.getElementById('bsTip').innerHTML = tipText.includes('※') ? tipText : tipText + '
' + bsDisc + '';
const columnLink = document.getElementById('bsColumn');
if (p.column) {
columnLink.href = p.column;
columnLink.style.display = 'flex';
document.getElementById('bsColumnTitle').textContent = p.name + '的詳細解說';
} else {
columnLink.style.display = 'none';
}
const voicesDiv = document.getElementById('bsVoices');
const voiceList = document.getElementById('bsVoiceList');
if (p.voices && p.voices.length > 0) {
voicesDiv.style.display = 'block';
document.getElementById('bsVoiceCount').textContent = p.voiceCount + '則';
voiceList.innerHTML = p.voices.map(function(v) {
return '' + v.initial + '
' + v.name + '
' + v.attr + '
' + v.text + '
';
}).join('');
} else {
voicesDiv.style.display = 'none';
}
// Set official URL
const officialBtn = document.getElementById('bsOfficialBtn');
if (p.originalUrl) {
officialBtn.href = p.originalUrl;
officialBtn.style.display = 'flex';
} else {
officialBtn.style.display = 'none';
}
currentBsId = p.id;
updateBsHeartBtn();
document.getElementById('bsOverlay').classList.add('is-open');
document.body.style.overflow = 'hidden';
}
function closeBottomSheet() {
const id = currentBsId;
// Clear URL parameter
const url = new URL(window.location.href);
url.searchParams.delete('product');
try { window.history.replaceState({}, '', url); } catch(e) {}
document.getElementById('bsOverlay').classList.remove('is-open');
document.body.style.overflow = '';
currentBsId = null;
// 닫은 후 해당 카드의 카테고리 섹션으로 스크롤 복귀
if (id) {
setTimeout(function() {
var cardEl = document.querySelector('.card[data-id="' + id + '"]');
if (cardEl) {
var catSection = null;
// 카드의 상위 cat-hd 섹션 찾기 (이전 형제 순회)
var el = cardEl;
while (el && el.parentElement) {
el = el.parentElement;
var prevCat = el.previousElementSibling;
while (prevCat) {
if (prevCat.classList && prevCat.classList.contains('cat-hd')) {
catSection = prevCat;
break;
}
prevCat = prevCat.previousElementSibling;
}
if (catSection) break;
}
var target = catSection || cardEl;
var offset = 80;
var top = target.getBoundingClientRect().top + window.pageYOffset - offset;
window.scrollTo({ top: top, behavior: 'smooth' });
} else {
// 동적 카드(탭 렌더링)인 경우 products-section으로
var sec = document.getElementById('products-section');
if (sec) sec.scrollIntoView({ behavior: 'smooth', block: 'start' });
}
}, 150);
}
}
function updateBsHeartBtn() {
const btn = document.getElementById('bsHeartBtn');
const isInList = myList.includes(currentBsId);
btn.classList.toggle('active', isInList);
btn.innerHTML = isInList ? '' : '';
}
function toggleListFromBottomSheet() {
if (!currentBsId) return;
toggleList(currentBsId);
updateBsHeartBtn();
}
function shareToLineFromBS() {
if (!currentBsId) return;
const all = getAllProducts();
const p = all.find(function(x) { return x.id === currentBsId; });
if (p) {
const productUrl = window.location.origin + window.location.pathname + '?product=' + p.slug;
const text = encodeURIComponent(p.name + '\n¥' + p.price.toLocaleString() + '\n\n' + productUrl);
window.open('https://line.me/R/msg/text/?' + text, '_blank');
}
}
function shareProductFromBS() {
if (!currentBsId) return;
const all = getAllProducts();
const p = all.find(function(x) { return x.id === currentBsId; });
if (p) shareItem(p.name);
}
function closeDetailModal() {
// Clear URL parameter
const url = new URL(window.location.href);
url.searchParams.delete('product');
try { window.history.replaceState({}, '', url); } catch(e) {}
document.getElementById('detailModal').classList.remove('active');
currentModalId = null;
}
function updateModalHeartBtn() {
const btn = document.getElementById('modalHeartBtn');
const isInList = myList.includes(currentModalId);
btn.classList.toggle('active', isInList);
btn.innerHTML = isInList ? '' : '';
}
function shareToLineProduct() {
if (!currentModalId) return;
const all = getAllProducts();
const p = all.find(function(x) { return x.id === currentModalId; });
if (p) {
const productUrl = window.location.origin + window.location.pathname + '?product=' + p.slug;
const text = encodeURIComponent(p.name + '\n¥' + p.price.toLocaleString() + '\n\n' + productUrl);
window.open('https://line.me/R/msg/text/?' + text, '_blank');
}
}
function toggleList(id, event) {
if (event) {
event.stopPropagation();
const btn = event.currentTarget;
const icon = btn.querySelector('i');
if (myList.includes(id)) {
myList = myList.filter(function(x) { return x !== id; });
btn.classList.remove('active');
icon.classList.remove('fas');
icon.classList.add('far');
showToast('已從收藏中移除');
} else {
myList.push(id);
btn.classList.add('active');
icon.classList.remove('far');
icon.classList.add('fas');
btn.style.transform = 'scale(1.3)';
setTimeout(function() { btn.style.transform = 'scale(1)'; }, 200);
showToast('已加入清單!');
}
localStorage.setItem('cheGuide2026', JSON.stringify(myList));
updateCount();
initCardHeartButtons(); // 카드 하트 상태 갱신
} else {
if (myList.includes(id)) {
myList = myList.filter(function(x) { return x !== id; });
} else {
myList.push(id);
showToast('已加入清單');
}
localStorage.setItem('cheGuide2026', JSON.stringify(myList));
updateCount();
initCardHeartButtons(); // 카드 하트 상태 갱신
}
}
function toggleListFromModal() {
if (!currentModalId) return;
toggleList(currentModalId);
updateModalHeartBtn();
}
function updateCount() {
document.getElementById('listCount').textContent = myList.length;
}
function openListModal() {
const modal = document.getElementById('listModal');
const container = document.getElementById('listItems');
const footer = document.getElementById('listFooter');
const screenshotTip = document.getElementById('listScreenshotTip');
const all = getAllProducts();
if (myList.length === 0) {
container.innerHTML = '';
footer.style.display = 'none';
screenshotTip.style.display = 'none';
} else {
container.innerHTML = myList.map(function(id) {
const p = all.find(function(x) { return x.id === id; });
if (!p) return '';
return '
' + p.name + '
¥' + p.price.toLocaleString() + '
';
}).join('');
footer.style.display = 'flex';
screenshotTip.style.display = 'flex';
}
modal.classList.add('active');
}
function closeListModal() {
document.getElementById('listModal').classList.remove('active');
}
function removeFromList(id) {
myList = myList.filter(function(x) { return x !== id; });
localStorage.setItem('cheGuide2026', JSON.stringify(myList));
updateCount();
renderTabs();
openListModal();
}
function shareToLine() {
const all = getAllProducts();
const items = myList.map(function(id) {
const p = all.find(function(x) { return x.id === id; });
return p ? '・' + p.name + ' ¥' + p.price.toLocaleString() : '';
}).filter(Boolean).join('\n');
const text = encodeURIComponent('【世彬老師的推薦2026春】我的購物清單\n\n' + items + '\n\n詳情請看:' + location.href);
window.open('https://line.me/R/msg/text/?' + text, '_blank');
}
function copyUrlFromModal() {
if (!currentModalId) return;
const all = getAllProducts();
const p = all.find(function(x) { return x.id === currentModalId; });
if (!p) return;
const productUrl = window.location.origin + window.location.pathname + '?product=' + p.slug;
navigator.clipboard.writeText(productUrl).then(function() {
showToast('已複製商品網址!');
}).catch(function() {
showToast('複製失敗,請重試');
});
}
function copyUrlFromBS() {
if (!currentBsId) return;
const all = getAllProducts();
const p = all.find(function(x) { return x.id === currentBsId; });
if (!p) return;
const productUrl = window.location.origin + window.location.pathname + '?product=' + p.slug;
navigator.clipboard.writeText(productUrl).then(function() {
showToast('已複製商品網址!');
}).catch(function() {
showToast('複製失敗,請重試');
});
}
function copyUrl() {
navigator.clipboard.writeText(location.href);
showToast('已複製網址!');
}
function copyCode(code) {
navigator.clipboard.writeText(code);
showToast('已複製優惠碼!');
}
function showToast(msg) {
const toast = document.getElementById('toast');
document.getElementById('toastText').textContent = msg;
toast.classList.add('show');
setTimeout(function() { toast.classList.remove('show'); }, 2500);
}
// Tab button events
document.querySelectorAll('.tab-btn').forEach(function(btn) {
btn.addEventListener('click', function() { switchTab(btn.dataset.tab); });
});
// Store tab events
document.querySelectorAll('.store-tab').forEach(function(btn) {
btn.addEventListener('click', function() {
document.querySelectorAll('.store-tab').forEach(function(b) { b.classList.remove('active'); });
btn.classList.add('active');
const store = btn.dataset.store;
document.querySelectorAll('.store-panel').forEach(function(p) { p.classList.remove('active'); });
document.getElementById('store-' + store).classList.add('active');
});
});
// Modal outside click close
document.getElementById('detailModal').addEventListener('click', function(e) {
if (e.target === document.getElementById('detailModal')) closeDetailModal();
});
document.getElementById('listModal').addEventListener('click', function(e) {
if (e.target === document.getElementById('listModal')) closeListModal();
});
// Initialize
renderTabs();
updateCount();
// DOM이 완전히 준비된 후 배지 삽입
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', function() {
initCardHeartButtons();
initCardVideoOverlays();
updateCardVpSections();
});
} else {
initCardHeartButtons();
initCardVideoOverlays();
}
// 카드 앞면 하트(즐겨찾기) 버튼 동적 삽입
function initCardHeartButtons() {
document.querySelectorAll('.card[data-id]').forEach(function(card) {
const id = parseInt(card.getAttribute('data-id'));
const ciEl = card.querySelector('.ci') || card.querySelector('.ci-h');
if (!ciEl) return;
// 기존 버튼 제거 후 재생성 (상태 갱신용)
const existing = ciEl.querySelector('.btn-like-float');
if (existing) existing.remove();
const btn = document.createElement('button');
const isActive = myList.includes(id);
btn.className = 'btn-like-float' + (isActive ? ' active' : '');
btn.innerHTML = '';
btn.addEventListener('click', function(e) { toggleList(id, e); });
ciEl.appendChild(btn);
});
}
// 카드 영상 배지 — A안(이미지 하단 좌측 pill) + C안(footer chip)
// 카드 앞면 vp-section을 tabData 실제 데이터로 갱신
function updateCardVpSections() {
var all = getAllProducts();
all.forEach(function(p) {
var cardEl = document.querySelector('.card[data-id="' + p.id + '"]');
if (!cardEl) return;
var vpEl = cardEl.querySelector('.vp-section');
if (!vpEl) return;
if (!p.voices || p.voices.length === 0) {
vpEl.style.display = 'none';
return;
}
// 앞 2건만
// ● 더미 데이터면 vp-section 숨김
var realVoices = p.voices.filter(function(v) { return v.text && !v.text.includes('●'); });
if (realVoices.length === 0) { vpEl.style.display = 'none'; return; }
var cards = realVoices.slice(0, 2).map(function(v) {
var icon = v.snsUrl ? ('' + getSnsIcon(v.snsUrl) + '') : '';
return ''
+ '
'
+ '
' + v.initial + '
'
+ '
' + v.name + ''
+ '
' + v.attr + ''
+ icon
+ '
'
+ '
' + v.text + '
'
+ '
';
}).join('');
vpEl.innerHTML = '' + cards;
});
}
function initCardVideoOverlays() {
const all = getAllProducts();
all.forEach(function(p) {
if (!p.hasVideo || !p.videoId) return;
const cardEl = document.querySelector('.card[data-id="' + p.id + '"]');
if (!cardEl) return;
// A안: .ci 하단 좌측 pill
const ciEl = cardEl.querySelector('.ci') || cardEl.querySelector('.ci-h');
if (ciEl && !ciEl.querySelector('.video-pill')) {
ciEl.style.position = 'relative';
const pill = document.createElement('div');
pill.className = 'video-pill';
pill.innerHTML = ' 影片';
ciEl.appendChild(pill);
}
// cf 영역 vid-chip 제거 — 썸네일 pill만 사용
});
}
// 필터바 active 스크롤 연동
(function() {
var catIds = ['cat1','cat2','cat3','cat4'];
var fbBtns = document.querySelectorAll('.cat-fb');
if (!fbBtns.length) return;
var observer = new IntersectionObserver(function(entries) {
entries.forEach(function(entry) {
if (entry.isIntersecting) {
var id = entry.target.id;
fbBtns.forEach(function(btn) { btn.classList.remove('active'); });
var idx = catIds.indexOf(id);
if (idx >= 0 && fbBtns[idx + 1]) fbBtns[idx + 1].classList.add('active');
}
});
}, { rootMargin: '-20% 0px -60% 0px', threshold: 0 });
catIds.forEach(function(id) {
var el = document.getElementById(id);
if (el) observer.observe(el);
});
})();
// Scroll-triggered fade-in animations
const observerOptions = { threshold: 0.1, rootMargin: '0px 0px -40px 0px' };
const fadeObserver = new IntersectionObserver(function(entries) {
entries.forEach(function(entry) {
if (entry.isIntersecting) {
entry.target.classList.add('is-visible');
fadeObserver.unobserve(entry.target);
}
});
}, observerOptions);
document.querySelectorAll('.split-banner-section, .featured-section, .products-section, .sakura-section, .store-guide, .outro-section').forEach(function(el) {
el.classList.add('fade-section');
fadeObserver.observe(el);
});
// Check URL parameter for direct product link
(function() {
const params = new URLSearchParams(window.location.search);
const productSlug = params.get('product');
if (productSlug) {
setTimeout(function() {
const all = getAllProducts();
const p = all.find(function(x) { return x.slug === productSlug; });
if (p) openDetailModal(p.id);
}, 300);
}
})();
// Hero photo + speech slideshow
(function() {
var current = 0;
var total = 3;
var interval = 4000;
function goToSlide(n) {
document.querySelectorAll('.tei-slide').forEach(function(el) { el.classList.remove('active'); });
document.querySelectorAll('.speech-slide').forEach(function(el) { el.classList.remove('active'); });
document.querySelectorAll('.tei-dot').forEach(function(el) { el.classList.remove('active'); });
document.querySelectorAll('[data-slide="' + n + '"]').forEach(function(el) { el.classList.add('active'); });
current = n;
}
// Auto rotate
setInterval(function() {
goToSlide((current + 1) % total);
}, interval);
// Click dots
document.querySelectorAll('.tei-dot').forEach(function(dot) {
dot.addEventListener('click', function() {
goToSlide(parseInt(this.getAttribute('data-slide')));
});
});
})();
// Onboarding tooltip - show once for first-time visitors
(function() {
if (localStorage.getItem('cheOnboarded')) return;
var tip = document.getElementById('onboardingTip');
var shown = false;
var observer = new IntersectionObserver(function(entries) {
if (entries[0].isIntersecting && !shown) {
shown = true;
setTimeout(function() {
tip.classList.add('show');
}, 1500);
// Auto-hide after 8 seconds
setTimeout(function() {
closeOnboarding();
}, 9500);
}
}, { threshold: 0.3 });
var productsSection = document.querySelector('.products-section');
if (productsSection) observer.observe(productsSection);
})();
function closeOnboarding() {
var tip = document.getElementById('onboardingTip');
if (tip) {
tip.style.opacity = '0';
tip.style.transition = 'opacity 0.3s';
setTimeout(function() { tip.style.display = 'none'; }, 300);
}
localStorage.setItem('cheOnboarded', '1');
}
/* === Sakura Date Matcher + Seasonal Switch === */
(function() {
var skCities = [
{ name:'名古屋', bloom:'3/17', full:'3/27', fall:'3/31', snow:'4/3', img:'', tip:'', sensei:'名古屋城和鶴舞公園是賞櫻好去處!今年東海地區已提早開花,目前正值滿開,週末是最佳賞花時機 🎌' },
{ name:'東京', bloom:'3/19', full:'3/27', fall:'3/31', snow:'4/3', img:'', tip:'', sensei:'東京推薦上野公園和目黑川!今年3/19開花,3/27已滿開!週末5月暖陽,賞花最佳時期 😊' },
{ name:'福岡', bloom:'3/24', full:'3/30', fall:'4/3', snow:'4/6', img:'', tip:'', sensei:'福岡已開花!舞鶴公園和西公園是賞櫻名所,搭配太宰府一日遊剛剛好,3/30預計滿開 🚃' },
{ name:'大阪', bloom:'3/26', full:'4/1', fall:'4/5', snow:'4/8', img:'', tip:'', sensei:'大阪3/26開花!大阪城公園和造幣局通り抜け是必去,4月初就是滿開黃金期,造幣局只開放一週 🏯' },
{ name:'京都', bloom:'3/23', full:'3/31', fall:'4/5', snow:'4/8', img:'', tip:'', sensei:'京都3/23開花!哲學之道和蹴上傾斜鐵道超美,3/31預計滿開,4月初是黃金賞花期,建議一大早去 🌸' },
{ name:'仙台', bloom:'3/31', full:'4/5', fall:'4/9', snow:'4/13', img:'', tip:'', sensei:'仙台3/31預計開花,比平年早8天!白石川沿岸8公里的一目千本櫻超壯觀,4月上旬是最佳時機 🚂' },
{ name:'札幌', bloom:'4/23', full:'4/27', fall:'5/1', snow:'5/4', img:'', tip:'', sensei:'北海道今年也比平年早,4/23開花!5月的札幌完全沒有花粉,圓山公園可以邊烤肉邊賞櫻 🦌' },
{ name:'沖繩', bloom:'1/15', full:'2/1', fall:'2/8', snow:'2/12', img:'', tip:'', sensei:'沖繩的寒緋櫻是深粉色,和本州染井吉野完全不同。1~2月在今帰仁城跡就能看到!今年已結束' }
];
function skParseDate(str, yr) {
yr = yr || 2026;
var p = str.split('/'); return new Date(yr, parseInt(p[0])-1, parseInt(p[1]));
}
/* --- Seasonal Auto-Switch --- */
var now = new Date();
var heroEl = document.getElementById('sakura-section');
var detailEl = document.querySelector('.sakura-section');
var senseiText = document.getElementById('skSenseiText');
var phase1End = new Date(2026, 3, 15); // 4/15
var phase2End = new Date(2026, 4, 10); // 5/10
if (now > phase2End) {
// Phase 3: season over — hide hero, simplify detail section
if (heroEl) heroEl.style.display = 'none';
if (detailEl) {
var inner = detailEl.querySelector('.sakura-inner');
if (inner) {
inner.innerHTML = '' +
'
🌿
' +
'
2026年的櫻花季已結束
' +
'
感謝大家今年的賞櫻!
接下來進入夏季,別忘了防曬和消暑對策商品~
' +
'
' +
'

' +
'
櫻花季結束了,但夏天的日本也很精彩!防曬、止汗、防蚊⋯⋯我的推薦商品都在上面,記得看看唷 ☀️
' +
'
' +
'
';
}
}
} else if (now > phase1End && senseiText) {
// Phase 2: tokyo/osaka ended, sapporo highlight
senseiText.innerHTML = '東京・大阪的櫻花差不多結束了,但札幌現在正是滿開!
5月去北海道完全沒有花粉困擾,推薦給怕花粉的朋友 🌸';
var cityEls = document.querySelectorAll('.sakura-city');
cityEls.forEach(function(el) {
el.classList.remove('active');
if (el.querySelector('.name') && el.querySelector('.name').textContent === '札幌') {
el.classList.add('active');
}
});
}
// Phase 1 (default): as-is
/* --- Date Matcher --- */
document.getElementById('skDateBtn').addEventListener('click', function() {
var sv = document.getElementById('skTravelStart').value;
var ev = document.getElementById('skTravelEnd').value;
if (!sv || !ev) return;
var start = new Date(sv), end = new Date(ev);
var best = null, bestScore = -999, bestStage = '';
skCities.forEach(function(c) {
var bloom = skParseDate(c.bloom), full = skParseDate(c.full);
var fall = skParseDate(c.fall), snow = skParseDate(c.snow);
var os = new Date(Math.max(start, bloom));
var oe = new Date(Math.min(end, snow));
var overlap = (oe - os) / 864e5;
if (overlap > 0) {
var mid = new Date((start.getTime() + end.getTime()) / 2);
var dist = Math.abs(mid - full) / 864e5;
var score = overlap * 10 - dist;
if (score > bestScore) {
bestScore = score; best = c;
bestStage = mid < bloom ? 'before' : mid < full ? 'bloom' : mid < fall ? 'full' : mid < snow ? 'fall' : 'snow';
}
}
});
if (!best) { alert('該期間沒有適合賞櫻的城市,建議調整日期!'); return; }
var info = {
before: { icon:'🌱', badge:'即將開花', status:'還在含苞待放中!', idx:-1 },
bloom: { icon:'🌸', badge:'開花中', status:'開花中!已經可以賞櫻了', idx:0 },
full: { icon:'🌺', badge:'滿開', status:'滿開!最佳觀賞時期 🎉', idx:1 },
fall: { icon:'🍃', badge:'開始飄落', status:'花瓣飄落中,別有一番風味', idx:2 },
snow: { icon:'💨', badge:'櫻花吹雪', status:'櫻花吹雪!最後的浪漫', idx:3 }
}[bestStage];
// Fill result
document.getElementById('skResultIcon').textContent = info.icon;
document.getElementById('skResultBadge').textContent = info.badge;
document.getElementById('skResultCity').textContent = best.name;
document.getElementById('skResultStatus').textContent = info.status;
// Fill dates
document.getElementById('skDate0').textContent = best.bloom;
document.getElementById('skDate1').textContent = best.full;
document.getElementById('skDate2').textContent = best.fall;
document.getElementById('skDate3').textContent = best.snow;
// Progress bar state
var stages = ['skStage0','skStage1','skStage2','skStage3'];
stages.forEach(function(id, i) {
var el = document.getElementById(id);
el.classList.remove('is-past','is-current','is-future');
if (i < info.idx) el.classList.add('is-past');
else if (i === info.idx) el.classList.add('is-current');
else el.classList.add('is-future');
});
// Progress fill width
var fillPct = info.idx < 0 ? 0 : (info.idx / 3) * 100;
document.getElementById('skProgressFill').style.width = fillPct + '%';
// Sensei comment
// Sensei comment now in speech bubble above photo
// Update speech bubble
var speechText = best.sensei || '你的旅程期間可以賞櫻!';
document.getElementById('skSpeechText').textContent = speechText;
var speech = document.getElementById('skSpeech');
speech.style.animation = 'none';
speech.offsetHeight; // trigger reflow
speech.style.animation = 'skSpeechIn 0.4s ease-out';
// Show
var result = document.getElementById('skResultInline');
result.classList.add('is-visible');
document.getElementById('sakura-section').scrollIntoView({ behavior: 'smooth', block: 'start' });
// Sync highlight to 4-stage photo cards below
document.querySelectorAll('.sakura-stage').forEach(function(el) {
el.classList.remove('is-highlight');
});
var targetIdx = info.idx;
var targetCard = document.querySelector('.sakura-stage[data-stage-idx="' + targetIdx + '"]');
if (targetCard) {
targetCard.classList.add('is-highlight');
setTimeout(function() {
targetCard.scrollIntoView({ behavior: 'smooth', block: 'center' });
}, 600);
}
});
// Retry
document.getElementById('skResultRetry').addEventListener('click', function() {
document.getElementById('skResultInline').classList.remove('is-visible');
document.querySelectorAll('.sakura-stage').forEach(function(el) {
el.classList.remove('is-highlight');
});
document.getElementById('skSpeechText').textContent = '日期輸入好了嗎?我來幫你找最適合的城市!🌿';
document.getElementById('skTravelStart').focus();
});
// Store Guide Tabs & Scroll Arrows
// Store scroll arrows
(function() {
var scroller = document.getElementById('sgStoresScroll');
var leftBtn = document.getElementById('sgArrowL');
var rightBtn = document.getElementById('sgArrowR');
if (scroller && leftBtn && rightBtn) {
var scrollAmt = 314; // card width + gap
leftBtn.addEventListener('click', function() {
scroller.scrollBy({ left: -scrollAmt, behavior: 'smooth' });
});
rightBtn.addEventListener('click', function() {
scroller.scrollBy({ left: scrollAmt, behavior: 'smooth' });
});
}
})();
document.querySelectorAll('.sg-tab').forEach(function(tab) {
tab.addEventListener('click', function() {
document.querySelectorAll('.sg-tab').forEach(function(t) { t.classList.remove('is-active'); });
document.querySelectorAll('.sg-panel').forEach(function(p) { p.classList.remove('is-active'); });
this.classList.add('is-active');
var target = document.getElementById('sg-' + this.dataset.sg);
if (target) target.classList.add('is-active');
});
});
// Section Nav scroll spy (mobile + PC)
(function() {
var mobileItems = document.querySelectorAll('.section-nav-item');
var pcItems = document.querySelectorAll('.header-nav-item');
var allNavItems = document.querySelectorAll('.section-nav-item, .header-nav-item');
var sections = [];
mobileItems.forEach(function(item) {
var id = item.getAttribute('href').replace('#', '');
var el = document.getElementById(id);
if (el) sections.push({ id: id, el: el });
});
function updateNav() {
var scrollY = window.scrollY + 100;
var currentId = null;
sections.forEach(function(s) {
if (s.el.offsetTop <= scrollY) currentId = s.id;
});
allNavItems.forEach(function(n) { n.classList.remove('is-active'); });
if (currentId) {
allNavItems.forEach(function(n) {
if (n.getAttribute('href') === '#' + currentId) n.classList.add('is-active');
});
var nav = document.getElementById('sectionNav');
var activeM = nav ? nav.querySelector('.is-active') : null;
if (activeM && nav) {
var left = activeM.offsetLeft - nav.offsetWidth / 2 + activeM.offsetWidth / 2;
nav.scrollTo({ left: left, behavior: 'smooth' });
}
}
}
window.addEventListener('scroll', updateNav, { passive: true });
updateNav();
allNavItems.forEach(function(item) {
item.addEventListener('click', function(e) {
e.preventDefault();
var id = this.getAttribute('href').replace('#', '');
var el = document.getElementById(id);
if (el) {
var top = el.offsetTop - 90;
window.scrollTo({ top: top, behavior: 'smooth' });
}
});
});
})();
})();