(function () {
/* CSS注入 */
var style = document.createElement('style');
style.textContent = '#sim1_wrapper button:active{transform:scale(0.97);} #sim1_wrapper .sim1-q{transition:opacity 0.3s,max-height 0.3s;overflow:hidden;} #sim1_wrapper .sim1-q.hidden{opacity:0;max-height:0;padding:0;margin:0;} #sim1_wrapper .sim1-opt{transition:background 0.15s,border-color 0.15s;} #sim1_wrapper .sim1-opt.selected{background:#e8f0fe !important;border-color:#4a90d9 !important;} #sim2_wrapper .sim2-opt{transition:background 0.15s,border-color 0.15s;cursor:pointer;} #sim2_wrapper .sim2-opt:hover{background:#f0f0f0;} #sim2_wrapper .sim2-opt.selected{background:#e8f5e9 !important;border-color:#2ecc71 !important;}';
document.head.appendChild(style);
function initSimulators() {
function $(id) { return document.getElementById(id); }
/* SIM1: バット選び診断(レガシー vs MM18) */
if ($('sim1_wrapper')) {
var answers = [0, 0, 0]; /* 0=未回答, 1=レガシー, 2=MM18 */
var currentQ = 0;
var questions = ['sim1_q1', 'sim1_q2', 'sim1_q3'];
var progress = $('sim1_progress_fill');
var resultArea = $('sim1_result');
var retryBtn = $('sim1_retry');
function showQuestion(idx) {
for (var i = 0; i < questions.length; i++) {
var el = $(questions[i]);
if (el) {
if (i === idx) {
el.style.display = 'block';
setTimeout(function(e){ e.style.opacity = '1'; e.style.maxHeight = '500px'; }.bind(null, el), 10);
} else {
el.style.opacity = '0';
el.style.maxHeight = '0';
setTimeout(function(e){ e.style.display = 'none'; }.bind(null, el), 300);
}
}
}
if (progress) progress.style.width = ((idx + 1) / 3 * 100) + '%';
}
function selectOption(questionIdx, value, btnEl) {
answers[questionIdx] = value;
/* ハイライト */
var parent = btnEl.parentNode;
var opts = parent.querySelectorAll('.sim1-opt');
for (var i = 0; i < opts.length; i++) opts[i].classList.remove('selected');
btnEl.classList.add('selected');
/* 次の質問へ(0.4秒後) */
setTimeout(function() {
if (questionIdx < 2) {
currentQ = questionIdx + 1;
showQuestion(currentQ);
} else {
showResult();
}
}, 400);
}
function showResult() {
var legacyCount = 0;
var mm18Count = 0;
for (var i = 0; i < answers.length; i++) {
if (answers[i] === 1) legacyCount++;
if (answers[i] === 2) mm18Count++;
}
var title, desc, link, color;
if (legacyCount > mm18Count) {
title = '⚾ ビヨンドマックスレガシー';
desc = 'お子さんには飛距離重視のレガシーがおすすめです!トップバランスの遠心力でフルスイングの威力を最大化できます。';
link = 'https://www.amazon.co.jp/s?k=%E3%83%9F%E3%82%BA%E3%83%8E%20%E3%83%93%E3%83%A8%E3%83%B3%E3%83%89%E3%83%9E%E3%83%83%E3%82%AF%E3%82%B9%E3%83%AC%E3%82%AC%E3%82%B7%E3%83%BC%20%E5%B0%91%E5%B9%B4%E8%BB%9F%E5%BC%8F&tag=baseball08a-22';
color = '#e74c3c';
} else if (mm18Count > legacyCount) {
title = '⚾ SSK MM18';
desc = 'お子さんには操作性重視のMM18がおすすめです!ミドルバランスで広角に打ち分ける技術を最大限に活かせます。';
link = 'https://www.amazon.co.jp/s?k=SSK%20MM18%20%E5%B0%91%E5%B9%B4%E8%BB%9F%E5%BC%8F&tag=baseball08a-22';
color = '#4a90d9';
} else {
title = '🤔 どちらも合う可能性あり!';
desc = 'スペックではどちらも合っています。必ず試打して打感の好みで決めてください。記事の詳細比較も参考にしてください。';
link = '';
color = '#f39c12';
}
$('sim1_result_title').innerHTML = title;
$('sim1_result_title').style.color = color;
$('sim1_result_desc').innerHTML = desc;
var linkArea = $('sim1_result_link');
if (link && linkArea) {
linkArea.innerHTML = 'Amazonで価格をチェック →';
} else if (linkArea) {
linkArea.innerHTML = '';
}
/* 質問を全て非表示 */
for (var i = 0; i < questions.length; i++) {
var el = $(questions[i]);
if (el) { el.style.display = 'none'; }
}
if (progress) progress.style.width = '100%';
resultArea.style.display = 'block';
resultArea.style.opacity = '0';
setTimeout(function() { resultArea.style.opacity = '1'; }, 10);
retryBtn.style.display = 'block';
}
/* ボタンイベント登録 */
var allOpts = $('sim1_wrapper').querySelectorAll('.sim1-opt');
for (var i = 0; i < allOpts.length; i++) {
allOpts[i].addEventListener('click', function() {
var q = parseInt(this.getAttribute('data-q'));
var v = parseInt(this.getAttribute('data-v'));
selectOption(q, v, this);
});
}
/* リトライ */
if (retryBtn) {
retryBtn.addEventListener('click', function() {
answers = [0, 0, 0];
currentQ = 0;
resultArea.style.display = 'none';
retryBtn.style.display = 'none';
showQuestion(0);
/* 選択状態リセット */
var opts = $('sim1_wrapper').querySelectorAll('.sim1-opt');
for (var i = 0; i < opts.length; i++) opts[i].classList.remove('selected');
});
}
/* 初期表示 */
showQuestion(0);
}
/* SIM2: ジュニアプロテイン診断 */
if ($('sim2_wrapper')) {
var s2answers = [0, 0, 0];
var s2currentQ = 0;
var s2questions = ['sim2_q1', 'sim2_q2', 'sim2_q3'];
var s2progress = $('sim2_progress_fill');
var s2resultArea = $('sim2_result');
var s2retryBtn = $('sim2_retry');
function s2showQ(idx) {
for (var i = 0; i < s2questions.length; i++) {
var el = $(s2questions[i]);
if (el) {
el.style.display = (i === idx) ? 'block' : 'none';
}
}
if (s2progress) s2progress.style.width = ((idx + 1) / 3 * 100) + '%';
}
function s2selectOpt(qi, v, btn) {
s2answers[qi] = v;
var qDiv = $(s2questions[qi]);
if (qDiv) {
var opts = qDiv.querySelectorAll('.sim2-opt');
for (var i = 0; i < opts.length; i++) opts[i].classList.remove('selected');
}
btn.classList.add('selected');
setTimeout(function() {
if (qi < 2) {
s2currentQ = qi + 1;
s2showQ(s2currentQ);
} else {
s2showResult();
}
}, 400);
}
function s2showResult() {
var milk = s2answers[0], priority = s2answers[1], taste = s2answers[2];
var title = '', desc = '', link = '', color = '#333';
if (milk === 2) {
if (taste === 2) {
title = '🍓 アストリション イチゴ味';
desc = '大豆由来でお腹に優しく、フルーツ味でスッキリ飲めます。';
link = 'https://www.amazon.co.jp/dp/B08PSP4Z1N?tag=baseball08a-22';
color = '#e74c3c';
} else {
if (priority === 3) {
title = '🌱 VITAS VINOBBY';
desc = 'ソイベースでボーンペップ・アルギニンも配合。成長サポート成分重視ならコレ。';
link = 'https://www.amazon.co.jp/dp/B0DMYQWGF2?tag=baseball08a-22';
color = '#8e44ad';
} else {
title = '🫘 アストリション ココア味';
desc = '人工甘味料不使用の大豆プロテイン。牛乳NGの子の定番です。';
link = 'https://www.amazon.co.jp/dp/B098N3M5BZ?tag=baseball08a-22';
color = '#e67e22';
}
}
} else {
if (priority === 1) {
if (taste === 2) {
title = '🍌 ザプロ バナナ風味';
desc = '1食約70円のコスパ最強。バナナ味で飲みやすい大容量1kg。';
link = 'https://www.amazon.co.jp/dp/B0BVR8ZB77?tag=baseball08a-22';
color = '#f1c40f';
} else {
title = '🥇 ザバス ココア味';
desc = '1食約55円で定番の安心感。迷ったらまずコレから。';
link = 'https://www.amazon.co.jp/dp/B00IEA57NI?tag=baseball08a-22';
color = '#3498db';
}
} else if (priority === 2) {
title = '🌿 WINZONE ミルクココア味';
desc = '黒糖の自然な甘さ。着色料・香料不使用で品質重視の親御さんに。';
link = 'https://www.amazon.co.jp/dp/B0BLYH26VZ?tag=baseball08a-22';
color = '#27ae60';
} else {
title = '⚡ MAJIDE ジュニアプロテイン';
desc = '26種の栄養素を配合した完全栄養食コンセプト。成長サポート全振り。';
link = 'https://www.amazon.co.jp/dp/B0CZHT6LWR?tag=baseball08a-22';
color = '#2c3e50';
}
}
$('sim2_result_title').innerHTML = title;
$('sim2_result_title').style.color = color;
$('sim2_result_desc').innerHTML = desc;
var la = $('sim2_result_link');
if (la) {
if (link) {
la.innerHTML = 'Amazonで詳細をチェック →';
} else {
la.innerHTML = '';
}
}
for (var i = 0; i < s2questions.length; i++) {
var el = $(s2questions[i]);
if (el) el.style.display = 'none';
}
if (s2progress) s2progress.style.width = '100%';
s2resultArea.style.display = 'block';
s2retryBtn.style.display = 'block';
}
/* ボタンイベント登録 */
var s2allOpts = $('sim2_wrapper').querySelectorAll('.sim2-opt');
for (var i = 0; i < s2allOpts.length; i++) {
s2allOpts[i].addEventListener('click', function() {
var q = parseInt(this.getAttribute('data-q'));
var v = parseInt(this.getAttribute('data-v'));
s2selectOpt(q, v, this);
});
}
/* リトライ */
if (s2retryBtn) {
s2retryBtn.addEventListener('click', function() {
s2answers = [0, 0, 0];
s2currentQ = 0;
s2resultArea.style.display = 'none';
s2retryBtn.style.display = 'none';
s2showQ(0);
var opts = $('sim2_wrapper').querySelectorAll('.sim2-opt');
for (var i = 0; i < opts.length; i++) opts[i].classList.remove('selected');
});
}
/* 初期表示 */
s2showQ(0);
}
/* SIM3: ウレタンバット診断 */
if ($('sim3_wrapper')) {
var s3answers = [0, 0, 0];
var s3currentQ = 0;
var s3questions = ['sim3_q1', 'sim3_q2', 'sim3_q3'];
var s3progress = $('sim3_progress_fill');
var s3resultArea = $('sim3_result');
var s3retryBtn = $('sim3_retry');
function s3showQ(idx) {
for (var i = 0; i < s3questions.length; i++) {
var el = $(s3questions[i]);
if (el) { el.style.display = (i === idx) ? 'block' : 'none'; }
}
if (s3progress) s3progress.style.width = ((idx + 1) / 3 * 100) + '%';
}
function s3selectOpt(qi, v, btn) {
s3answers[qi] = v;
var qDiv = $(s3questions[qi]);
if (qDiv) {
var opts = qDiv.querySelectorAll('.sim3-opt');
for (var i = 0; i < opts.length; i++) opts[i].classList.remove('selected');
}
btn.classList.add('selected');
setTimeout(function() {
if (qi < 2) { s3currentQ = qi + 1; s3showQ(s3currentQ); }
else { s3showResult(); }
}, 400);
}
function s3showResult() {
var size = s3answers[0], style = s3answers[1], budget = s3answers[2];
var title = '', desc = '', link = '', color = '#333';
if (size === 1) {
/* 小さい子 */
if (budget === 1) {
title = '⚾ ビヨンドマックスEV2';
desc = '2万円台で軽量ミドルバランス。初めてのウレタンバットに最適。';
link = 'https://www.amazon.co.jp/dp/B0FD9LGPB3?tag=baseball08a-22';
color = '#3498db';
} else {
if (style === 1) {
title = '⚾ MM Junior';
desc = 'MM18の技術をジュニア体格に最適化。軽量で振りやすい。';
link = 'https://www.amazon.co.jp/dp/B0F2SZNML4?tag=baseball08a-22';
color = '#e74c3c';
} else {
title = '⚾ ワニクラッシャー スーパーライト';
desc = '超軽量ミドルバランス。体が小さくても振り遅れない。';
link = 'https://www.amazon.co.jp/dp/B0FTVQ7GSN?tag=baseball08a-22';
color = '#27ae60';
}
}
} else {
/* 大きい子 */
if (budget === 1) {
if (style === 2) {
title = '⚾ MM18 ミドルバランス';
desc = 'ウレタン18mm+ミドルバランス。操作性最強で打率UP。';
link = 'https://www.amazon.co.jp/dp/B09TS9BVG9?tag=baseball08a-22';
color = '#9b59b6';
} else {
title = '⚾ ワニクラッシャー スピードブラック';
desc = 'マルーチのパワーモデル。トップバランスで飛距離◎。';
link = 'https://www.amazon.co.jp/dp/B0FDQPX52G?tag=baseball08a-22';
color = '#2c3e50';
}
} else {
if (style === 1) {
title = '⚾ ビヨンドマックスレガシー';
desc = 'ウレタン18mmの絶対王者。芯を外しても飛ぶ安心感。';
link = 'https://www.amazon.co.jp/dp/B0DFY3C55H?tag=baseball08a-22';
color = '#e74c3c';
} else {
title = '⚾ SSK MM18';
desc = 'ウレタン18mm+操作性。レガシーより安くて技術派向き。';
link = 'https://www.amazon.co.jp/dp/B084HRTKC6?tag=baseball08a-22';
color = '#f39c12';
}
}
}
$('sim3_result_title').innerHTML = title;
$('sim3_result_title').style.color = color;
$('sim3_result_desc').innerHTML = desc;
var la = $('sim3_result_link');
if (la) {
if (link) {
la.innerHTML = 'Amazonで詳細をチェック →';
} else {
la.innerHTML = '';
}
}
for (var i = 0; i < s3questions.length; i++) {
var el = $(s3questions[i]);
if (el) el.style.display = 'none';
}
if (s3progress) s3progress.style.width = '100%';
s3resultArea.style.display = 'block';
s3retryBtn.style.display = 'block';
}
var s3allOpts = $('sim3_wrapper').querySelectorAll('.sim3-opt');
for (var i = 0; i < s3allOpts.length; i++) {
s3allOpts[i].addEventListener('click', function() {
var q = parseInt(this.getAttribute('data-q'));
var v = parseInt(this.getAttribute('data-v'));
s3selectOpt(q, v, this);
});
}
if (s3retryBtn) {
s3retryBtn.addEventListener('click', function() {
s3answers = [0, 0, 0];
s3currentQ = 0;
s3resultArea.style.display = 'none';
s3retryBtn.style.display = 'none';
s3showQ(0);
var opts = $('sim3_wrapper').querySelectorAll('.sim3-opt');
for (var i = 0; i < opts.length; i++) opts[i].classList.remove('selected');
});
}
s3showQ(0);
}
/* SIM4: スポーツドリンク診断 */
if ($('sim4_wrapper')) {
var s4answers = [0, 0, 0];
var s4currentQ = 0;
var s4questions = ['sim4_q1', 'sim4_q2', 'sim4_q3'];
var s4progress = $('sim4_progress_fill');
var s4resultArea = $('sim4_result');
var s4retryBtn = $('sim4_retry');
function s4showQ(idx) {
for (var i = 0; i < s4questions.length; i++) {
var el = $(s4questions[i]);
if (el) { el.style.display = (i === idx) ? 'block' : 'none'; }
}
if (s4progress) s4progress.style.width = ((idx + 1) / 3 * 100) + '%';
}
function s4selectOpt(qi, v, btn) {
s4answers[qi] = v;
var qDiv = $(s4questions[qi]);
if (qDiv) {
var opts = qDiv.querySelectorAll('.sim4-opt');
for (var i = 0; i < opts.length; i++) opts[i].classList.remove('selected');
}
btn.classList.add('selected');
setTimeout(function() {
if (qi < 2) { s4currentQ = qi + 1; s4showQ(s4currentQ); }
else { s4showResult(); }
}, 400);
}
function s4showResult() {
var scene = s4answers[0], priority = s4answers[1], form = s4answers[2];
var title = '', desc = '', link = '', color = '#333';
if (scene === 2) {
/* 真夏・終日 */
if (form === 1) {
title = '💧 ポカリスエット 粉末';
desc = '医学的に最適な電解質バランス。終日練習の水分補給はポカリ粉末が最強。';
link = 'https://www.amazon.co.jp/dp/B0966B2WK3?tag=baseball08a-22';
color = '#3498db';
} else {
title = '🧊 OS-1 オーエスワンゼリー';
desc = '医療レベルの経口補水液。真夏のクーラーボックスに必ず常備。';
link = 'https://www.amazon.co.jp/dp/B01C6LEE5M?tag=baseball08a-22';
color = '#e74c3c';
}
} else {
/* 通常練習 */
if (priority === 2) {
if (form === 1) {
title = '⚡ アミノバイタル 粉末';
desc = 'アミノ酸配合で水分補給+疲労回復の一石二鳥。レモン味でスッキリ。';
link = 'https://www.amazon.co.jp/dp/B0CWNBTSN5?tag=baseball08a-22';
color = '#27ae60';
} else {
title = '🏃 ヴァーム ウォーター';
desc = 'アミノ酸1500mg配合+カロリーゼロ。体を絞りながら動ける。';
link = 'https://www.amazon.co.jp/dp/B08VNJKSQX?tag=baseball08a-22';
color = '#f39c12';
}
} else {
if (form === 1) {
title = '💧 アクエリアス パウダー';
desc = 'クエン酸配合でスッキリ味。毎日の練習用にコスパ◎。';
link = 'https://www.amazon.co.jp/dp/B095MFNV6T?tag=baseball08a-22';
color = '#2980b9';
} else {
title = '🥤 アクエリアス 500ml';
desc = 'そのまま飲める手軽さ。箱買い1本約80円で試合・遠征に。';
link = 'https://www.amazon.co.jp/dp/B003UTTPTK?tag=baseball08a-22';
color = '#16a085';
}
}
}
$('sim4_result_title').innerHTML = title;
$('sim4_result_title').style.color = color;
$('sim4_result_desc').innerHTML = desc;
var la = $('sim4_result_link');
if (la) {
if (link) {
la.innerHTML = 'Amazonで詳細をチェック →';
} else {
la.innerHTML = '';
}
}
for (var i = 0; i < s4questions.length; i++) {
var el = $(s4questions[i]);
if (el) el.style.display = 'none';
}
if (s4progress) s4progress.style.width = '100%';
s4resultArea.style.display = 'block';
s4retryBtn.style.display = 'block';
}
var s4allOpts = $('sim4_wrapper').querySelectorAll('.sim4-opt');
for (var i = 0; i < s4allOpts.length; i++) {
s4allOpts[i].addEventListener('click', function() {
var q = parseInt(this.getAttribute('data-q'));
var v = parseInt(this.getAttribute('data-v'));
s4selectOpt(q, v, this);
});
}
if (s4retryBtn) {
s4retryBtn.addEventListener('click', function() {
s4answers = [0, 0, 0];
s4currentQ = 0;
s4resultArea.style.display = 'none';
s4retryBtn.style.display = 'none';
s4showQ(0);
var opts = $('sim4_wrapper').querySelectorAll('.sim4-opt');
for (var i = 0; i < opts.length; i++) opts[i].classList.remove('selected');
});
}
s4showQ(0);
}
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', initSimulators);
} else {
initSimulators();
}
})();