weixin_58648225 2023-01-31 21:24 采纳率: 89.2%
浏览 34
已结题

js拼接字符串传值不完整

类似于这样的HTML提交表格,用js拼接后提交,
但是总是顾得了头顾不了屁股的样子。部分代码如下


<div data-role="fieldcontain" class="section">
                <label for="shop_close1">
                  <span class="inputType">选择1</span>
                </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">选择2</span>
                  </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="" />

javascript部分目前如下

function goFunction(e, n) {
    let o="", p="";
    if (n ===  1) {
      o = e.target.value;
    }
    if (n === 2) {
      p = e.target.value;
    }
    document.getElementById("shop_close").value = o + "・" + p;
  }

在这里出现了问题,如果说一开始定义 let o 和 p 为空的话,当触发spMul的时候,id=day的option不能显示 比如选择"三 · 右" 的时候, "三"不能被显示。
而如果不定义变量o p的话,当触发spMul的时候可以显示完整, 但是如果不去触发spMul单,选择第一个select里面的id不为day的option的时候,没有值被传递 (狗牛猪羊猫),
能否请教这一问题的原因如何解决,谢谢!

  • 写回答

4条回答 默认 最新

  • CSDN专家-showbo 2023-01-31 22:36
    关注

    之前的你提的问题就帮你解决过了,没看我的直接采纳别人的去了。
    shop_close的值是shop_close1选中的值及shop_close1选中id=day时选择的shop_close2的值的组合?如果是用下面的

    <div data-role="fieldcontain" class="section">
        <label for="shop_close1">
            <span class="inputType">选择1</span>
        </label>
        <select name="shop_close1" id="shop_close1" data-inline="true" required onchange="close1Change()">
            <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">选择2</span>
            </label>
            <select name="shop_close2" id="shop_close2" data-line="true" onchange="goFunction()">
                <option selected></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="" />
    <script>
        function close1Change() {
            var shop_close1 = document.getElementById('shop_close1');
            spMul.style.display = shop_close1.options[shop_close1.selectedIndex].id == 'day' ? '' : 'none';
    
            goFunction()
        }
        function goFunction() {//不需要传参
            var shop_close1 = document.getElementById('shop_close1');
            var shop_close2 = document.getElementById('shop_close2');
            var isDay = shop_close1.options[shop_close1.selectedIndex].id == 'day';//判断选中的option是否id=day
    
            var s = shop_close1.value + (isDay ? '・' + shop_close2.value : '')//判断选的是id=day再链接shop_close2的值
            alert(s)
            document.getElementById('shop_close').value = s;
        }
    </script>
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 2月9日
  • 已采纳回答 2月1日
  • 创建了问题 1月31日

悬赏问题

  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效