越境EC
海外発送 / 国際配送
海外進出支援サービス
海外出店/代理購入
海外WEBマーケティング
海外SEO
海外インフルエンサー
ニュース
ブログ
お役立ちガイド一覧
BEENOSサービスサイト
CLOSE
HOME
${esc(conf.title)}
${esc(conf.desc)}
“どこを直すと効くか”が見えるようにします
チャネル/訴求/計測/ファン化のボトルネックを特定
優先度TOP3(すぐできる順)で提案
結果からそのまま無料相談へ
診断をはじめる
最初から
戻る
次へ
カテゴリ:${esc(conf.badge)} / ※回答は送信されません
優先度TOP3
よくある落とし穴
この結果をもとに、最短ルートを無料で整理できます
現状の施策前提で、改善余地や進め方を洗い出します。
無料で相談する
もう一度診断する
`; const $ = (sel) => root.querySelector(sel); const stages = { start:$('[data-stage="start"]'), wiz:$('[data-stage="wiz"]'), res:$('[data-stage="res"]') }; const slots = { bar:$('[data-slot="bar"]'), qnum:$('[data-slot="qnum"]'), qtext:$('[data-slot="qtext"]'), opts:$('[data-slot="opts"]'), rBadge:$('[data-slot="rBadge"]'), rTitle:$('[data-slot="rTitle"]'), rDesc:$('[data-slot="rDesc"]'), rTop3:$('[data-slot="rTop3"]'), rPit:$('[data-slot="rPit"]'), }; const show = (k)=>{ Object.values(stages).forEach(el=>el.classList.remove("is-on")); stages[k].classList.add("is-on"); }; const shake = (el)=> el?.animate([{transform:"translateX(0)"},{transform:"translateX(-6px)"},{transform:"translateX(6px)"},{transform:"translateX(0)"}],{duration:220,easing:"ease-out"}); const renderQ = ()=>{ const total = conf.questions.length; const i = state.i; const q = conf.questions[i]; slots.qnum.textContent = `Q${i+1}/${total}`; slots.qtext.textContent = q.q; const pct = Math.round((i / Math.max(1,total-1)) * 100); slots.bar.style.width = `${pct}%`; const current = state.answers[i]; slots.opts.innerHTML = q.opts.map((o, idx)=>{ const id = `bcmini_promo_${i}_${idx}_${Math.random().toString(16).slice(2)}`; return `
${esc(o.l)}
`; }).join(""); }; const read = ()=>{ const el = root.querySelector(`input[name="bcmini_promo_${state.i}"]:checked`); return el ? el.value : null; }; const result = ()=>{ const counts = {}; state.answers.forEach(t=>{ if(!t) return; counts[t]=(counts[t]||0)+1; }); const keys = Object.keys(conf.results); let best = keys[0], bestV = -1; keys.forEach(k=>{ const v = counts[k]||0; if(v>bestV){bestV=v; best=k;} }); const r = conf.results[best]; slots.rBadge.textContent = conf.badge; slots.rTitle.textContent = r.title; slots.rDesc.textContent = r.desc; slots.rTop3.innerHTML = r.top3.map(x=>`
${esc(x)}
`).join(""); slots.rPit.innerHTML = r.pitfalls.map(x=>`
${esc(x)}
`).join(""); }; root.addEventListener("change",(e)=>{ if(e.target && e.target.matches(`input[name="bcmini_promo_${state.i}"]`)){ state.answers[state.i] = e.target.value; } }); root.addEventListener("click",(e)=>{ const act = e.target.closest("[data-act]")?.getAttribute("data-act"); if(!act) return; if(act==="start"){ show("wiz"); state.i=0; state.answers=new Array(conf.questions.length).fill(null); renderQ(); return; } if(act==="reset"){ state.i=0; state.answers=new Array(conf.questions.length).fill(null); renderQ(); return; } if(act==="prev"){ if(state.i