如何根据用户在第一次选择时选择的内容填充辅助选择。
例如,如果用户选择" Silver"我想删除" Silver"来自第二次选择。
var b = {
img: "https://elo-boost.net/images/tiers/bronze_5.png",
pret: 10
};
var s = {
img: "https://elo-boost.net/images/tiers/silver_5.png",
pret: 20
};
var g = {
img: "https://elo-boost.net/images/tiers/gold_5.png",
pret: 30
};
var p = {
img: "https://elo-boost.net/images/tiers/platinum_5.png",
pret: 40
};
var d = {
img: "https://elo-boost.net/images/tiers/diamond_5.png",
pret: 50
};
var m = {
img: "https://elo-boost.net/images/tiers/master_1.png",
pret: 60
};
var select1 = document.getElementById("sel1");
var select2 = document.getElementById("sel2");
var imgleft = document.getElementById("limg");
var imageright = document.getElementById("rimg");
var pret1 = document.getElementById("pret1");
var pret2 = document.getElementById("pret2");
var sm = document.querySelector("h1");
function smm() {
var ne = document.querySelector("#pret1").innerHTML;
var wo = document.querySelector("#pret2").innerHTML;
sm.innerHTML = parseInt(ne) + parseInt(wo);
}
// eventListener pe select1
select1.addEventListener("change", function() {
if (this.value == 1) {
imgleft.src = b.img;
pret1.textContent = b.pret;
}
if (this.value == 2) {
imgleft.src = s.img;
pret1.textContent = s.pret;
}
if (this.value == 3) {
imgleft.src = g.img;
pret1.textContent = g.pret;
}
if (this.value == 4) {
imgleft.src = p.img;
pret1.textContent = p.pret;
}
if (this.value == 5) {
imgleft.src = d.img;
pret1.textContent = d.pret;
}
smm();
populate();
});
// eventListener pe select2
select2.addEventListener("change", function() {
if (this.value == 1) {
imageright.src = b.img;
pret2.textContent = b.pret;
}
if (this.value == 2) {
imageright.src = s.img;
pret2.textContent = s.pret;
}
if (this.value == 3) {
imageright.src = g.img;
pret2.textContent = g.pret;
}
if (this.value == 4) {
imageright.src = p.img;
pret2.textContent = p.pret;
}
if (this.value == 5) {
imageright.src = d.img;
pret2.textContent = d.pret;
}
smm();
populate();
});

<div style="float:left; width: 50%;">
<div>
<img src="https://elo-boost.net/images/tiers/silver_5.png" id="limg">
<p id="pret1" style="display:none;"></p>
</div>
<select id="sel1" class="slt1">
<option value="0">current rank</option>
<option value="1">BRONZE</option>
<option value="2">SILVER</option>
<option value="3">GOLD</option>
<option value="4">PLATINIUM</option>
<option value="5">DIAMOND</option>
</select>
</div>
<div style="float:left; width: 50%;">
<div>
<img src="https://elo-boost.net/images/tiers/silver_5.png" id="rimg">
<p id="pret2" style="display:none;"></p>
</div>
<select id="sel2" class="slt2">
<option value="0">desire rank</option>
<option value="1">BRONZE</option>
<option value="2">SILVER</option>
<option value="3">GOLD</option>
<option value="4">PLATINIUM</option>
<option value="5">DIAMOND</option>
</select>
</div>
<h1>Sum</h1>
&#13;
答案 0 :(得分:2)
检查这个片段我认为这就是你想要的。(不太熟悉LOL,这就是为什么排名或者可能是错误的)
var ranks = {
Bronze: ["Silver", "Gold", "Platinum", "Diamond"],
Silver: ["Gold", "Platinum", "Diamond"],
Gold: ["Platinum", "Diamond"],
Platinum: ["Diamond"],
Diamond: ["Diamond"]
}
function desireRank(value) {
if (value.length == 0) document.getElementById("desiredRank").innerHTML = "<option></option>";
else {
var catOptions = "";
for (desiredRankId in ranks[value]) {
catOptions += "<option>" + ranks[value][desiredRankId] + "</option>";
}
document.getElementById("desiredRank").innerHTML = catOptions;
}
}
&#13;
<select name="currentRank" id="currentRank" onChange="desireRank(this.value);">
<option value="" disabled selected>Select</option>
<option value="Bronze">Bronze</option>
<option value="Silver">Silver</option>
<option value="Gold">Gold</option>
<option value="Platinum">Platinum</option>
<option value="Diamond">Diamond</option>
</select>
<select name="desiredRank" id="desiredRank">
<option value="" disabled selected>Select</option>
</select>
&#13;
答案 1 :(得分:0)
我创建了一个带有名称的Object,generateOptions
是一个函数,它将徽章列表作为array of strings
(Object.keys返回)为每个字符串创建选项。
updateSelect
是一个获取select更新的函数,而省略的值,它会生成字符串数组并过滤掉省略值。
然后生成新选项。
const badges = {
bronze: {
img: "https://elo-boost.net/images/tiers/bronze_5.png",
pret: 10
},
silver: {
img: "https://elo-boost.net/images/tiers/silver_5.png",
pret: 20
},
gold: {
img: "https://elo-boost.net/images/tiers/gold_5.png",
pret: 30
},
platinum: {
img: "https://elo-boost.net/images/tiers/platinum_5.png",
pret: 40
},
diamond: {
img: "https://elo-boost.net/images/tiers/diamond_5.png",
pret: 50
},
master: {
img: "https://elo-boost.net/images/tiers/master_1.png",
pret: 60
}
};
var select1 = document.getElementById("sel1");
var select2 = document.getElementById("sel2");
var imgleft = document.getElementById("limg");
var imageright = document.getElementById("rimg");
var pret1 = document.getElementById("pret1");
var pret2 = document.getElementById("pret2");
var sm = document.querySelector("h1");
function smm() {
sm.innerHTML = badges[select1.value].pret + badges[select2.value].pret;
}
// eventListener pe select1
function generateOptions(select, badges) {
select.options.length = 0;
badges.forEach((type, index) => {
select.options[index] = new Option(type, type);
})
}
function updateSelect(select, otherSelectValue) {
const badgesKeys = Object.keys(badges).filter(key => key !== otherSelectValue);
generateOptions(select, badgesKeys);
}
generateOptions(select1, Object.keys(badges));
generateOptions(select2, Object.keys(badges));
select1.addEventListener("change", function() {
const option = badges[this.value];
imgleft.src = option.img;
pret1.textContent = option.pret
smm();
updateSelect(select2, this.value);
});
// eventListener pe select2
select2.addEventListener("change", function() {
const option = badges[this.value];
imageright.src = option.img;
pret2.textContent = option.pret
smm();
updateSelect(select1, this.value);
});
<div style="float:left; width: 50%;">
<div>
<img src="https://elo-boost.net/images/tiers/silver_5.png" id="limg">
<p id="pret1" style="display:none;"></p>
</div>
<select id="sel1" class="slt1"></select>
</div>
<div style="float:left; width: 50%;">
<div>
<img src="https://elo-boost.net/images/tiers/silver_5.png" id="rimg">
<p id="pret2" style="display:none;"></p>
</div>
<select id="sel2" class="slt2"></select>
</div>
<h1>Sum</h1>