先看效果圖:

代碼如下:
<style>
/* 按鈕樣式 */
.option-group {margin:10px 0;}
.option-btn {
display:inline-block;
padding:6px 14px;
margin:4px;
border:1px solid #ccc;
border-radius:6px;
cursor:pointer;
background:#f7f7f7;
transition:all .2s;
}
.option-btn.active {
background:#007bff;
color:#fff;
border-color:#007bff;
}
.option-btn.disabled {
opacity:0.4;
pointer-events:none;
}
</style>
<div class="option-group" id="tech-group">
<strong>3D Technology:</strong><br>
<span class="option-btn" data-tech="SLA(Resin)">SLA(Resin)</span>
<span class="option-btn" data-tech="MJF(Nylon)">MJF(Nylon)</span>
<span class="option-btn" data-tech="SLM(Metal)">SLM(Metal)</span>
<span class="option-btn" data-tech="FDM(Plastic)">FDM(Plastic)</span>
<span class="option-btn" data-tech="SLS(Nylon)">SLS(Nylon)</span>
<span class="option-btn" data-tech="WJP(Resin)">WJP(Resin)</span>
<span class="option-btn" data-tech="BJ(Metal)">BJ(Metal)</span>
</div>
<!-- 二級(jí)分類 -->
<div class="option-group" id="material-group">
<strong>Material:</strong><br>
<!-- 二級(jí)按鈕通過(guò)JS控制顯示 -->
</div>
<!-- 隱藏提交字段 -->
<input type="hidden" name="caizhi" id="caizhi">
<script>
const techGroup = document.getElementById("tech-group");
const materialGroup = document.getElementById("material-group");
const caizhiInput = document.getElementById("caizhi");
// 定義數(shù)據(jù)
const materials = {
"SLA(Resin)": ["9600 Resin","Black Resin","Imagine Black","8228 Resin","LEDO 6060 Resin","8001 Resin","CBY Resin","X Resin","JLC Black Resin","Grey Resin","JLC Temp Resin"],
"MJF(Nylon)": ["PA12-HP Nylon","PAC-HP Nylon","PA11-HP Nylon"],
"SLM(Metal)": ["316L","Titanium TC4"],
"FDM(Plastic)": ["ABS","PLA","ASA","PA12-CF"],
"SLS(Nylon)": ["3201PA-F Nylon","1172Pro Nylon","3301PA Nylon"],
"WJP(Resin)": ["Full Color Resin"],
"BJ(Metal)": ["BJ-316L"]
};
let selectedTech = "";
let selectedMaterial = "";
// 一級(jí)分類點(diǎn)擊
techGroup.addEventListener("click", e=>{
if(e.target.classList.contains("option-btn")){
// 高亮
[...techGroup.querySelectorAll(".option-btn")].forEach(btn=>btn.classList.remove("active"));
e.target.classList.add("active");
selectedTech = e.target.dataset.tech;
selectedMaterial = "";
caizhiInput.value = "";
// 生成對(duì)應(yīng)二級(jí)按鈕
materialGroup.innerHTML = "<strong>Material:</strong><br>";
materials[selectedTech].forEach(m=>{
const span = document.createElement("span");
span.className = "option-btn";
span.textContent = m;
span.dataset.material = m;
materialGroup.appendChild(span);
});
}
});
// 二級(jí)分類點(diǎn)擊
materialGroup.addEventListener("click", e=>{
if(e.target.classList.contains("option-btn")){
[...materialGroup.querySelectorAll(".option-btn")].forEach(btn=>btn.classList.remove("active"));
e.target.classList.add("active");
selectedMaterial = e.target.dataset.material;
if(selectedTech && selectedMaterial){
caizhiInput.value = selectedTech + "---" + selectedMaterial;
}
}
});
</script>我們的網(wǎng)站后臺(tái)默認(rèn)有一個(gè)留言的提醒數(shù)據(jù):但是如果要有多個(gè)留言表單,那么我們自定義的留言表單卻沒(méi)有這個(gè)...
在之前的文章中,我們有講過(guò),如何使用擴(kuò)展字段來(lái)此入HTML代碼并添加預(yù)覽功能。文章鏈接可查看:https://ww...
以下內(nèi)容來(lái)源于PB交流QQ群。第一:NGINX配置。#攔截常見(jiàn)敏感后臺(tái)路徑訪問(wèn)(例如dede、admin、wp-login等),...
在外貿(mào)網(wǎng)站建設(shè)中,我們會(huì)遇到有客戶說(shuō)需要用戶前端留言的時(shí)候可以上傳自定義的文件或者圖片等資料。那么這...