<div data-role="fieldcontain" class="section">
<label for="shop_close1">
<span class="inputType">选择1span>
label>
<select name="shop_close1" id="shop_close1" data-inline="true" required onchange="spMul.style.display=this.options[this.selectedIndex].id=='day'?'':'none'; goFunction(event,1)">
<option>狗option>
<option>牛option>
<option>猪option>
<option>羊option>
<option>猫option>
<option id="day">一option>
<option id="day">二option>
<option id="day">三option>
<option id="day">四option>
<option id="day">五option>
<option id="day">六option>
select>
div>
<span id="spMul" style="display:none; column-count: 3">
<div data-role="fieldcontain" class="section">
<label class="ui-select">
<span class="inputType">选择2span>
label>
<select name="shop_close2" id="shop_close2" data-line="true" onchange="goFunction(event,2)">
<option>上option><option>下option><option>左option><option>右option>
<option>北option><option>西option><option>右option><option>东option>
select>
div>
span>
div>
<input type="hidden" name="shop_close" id="shop_close" value="" />
只有id=day的option被选中的时候触发id=spMul的"选择2"被触发的时候才会有数据传递 比如: 二·左
一旦选择1里面的非id=day单独选择的时候无任何数据传送到input里面
请问原因如何改正,谢谢
function goFunction(e,n) {
if (n==1) {
o = e.target.value;
}
if (n==2) {
p = e.target.value;
}
document.getElementById("shop_close").value = o + "・" + p;
}
你在onchange里面把修改spmul样式的代码放到gofuction方法里面去。你可以在gofunction里面把o和 p输出来看看。
js那里o和p提前定义了吗,如果没有就会报错,因为在n=1的时候p没有定义
这样试试
function goFunction(e, n) {
let o, p; // 这样选了非id=day的就会是某值·undefined,不要undefined也可以都声明为空字符串,let o = "", p = "";
if (n === 1) {
o = e.target.value;
}
if (n === 2) {
p = e.target.value;
}
document.getElementById("shop_close").value = o + "・" + p;
}
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!