【问题标题】:Switch / Case Variable Error开关/案例变量错误
【发布时间】:2012-12-02 15:47:41
【问题描述】:

我正在尝试获取四个文本框的输入,并根据单选复选框选项显示它。我在这里讨论了更多:

Most efficient coding style for forms with multiple radio buttons

以下代码行有问题:

//Gets value from input boxes  into array
var values = $('.names').map(function() { 
  if(this.value != '') return this.value; 
}).get();

//Check radio boxes
var selectedValue = $('input[name=friend]:checked').val();

//Determines array length
var length = values.length;

//if only one name
if (length==1) {
  switch(selectedValue) {
    case "na":
      values = values;
      break;
    case "van":
      values = values.join("och van");
      break;
    case "vanner":
      values = values.join("och vanner");
      break;
  }
}
alert(selectedValue);

它不会将值“och van”或“och vanner”添加到变量“values”中。独立运行一切正常。 IE。 “values”返回名称,“selectedValue”返回选中的单选框,“length”返回数组中元素的数量。但是当我尝试通过 If 语句组合它并切换大小写时它不起作用。

有问题的 HTML 在这里:

    <div id="inputboxes">
      <input type="text" name="name1" id="names1" class="names" value="" placeholder="1) Name Here . . .">
      <input type="text" name="name2" id="names2" class="names" value="" placeholder="2) Name Here . . .">
      <input type="text" name="name3" id="names3" class="names" value="" placeholder="3) Name Here . . .">
      <input type="text" name="name4" id="names4" class="names" value="" placeholder="4) Name Here . . .">
    </div>
  </li>
</ul>
<ul>
  <li>
    <div id="radios1">
      <input type="radio" id="na" value="na" name="friend" class="{src:'img/n.people.png',checked:'img/n.people.c.png',hover:'/img/unchecked.png'}"  checked="checked"/> 
      <input type="radio" id="van" value="van" name="friend" class="{src:'img/o.person.png',checked:'img/o.person.c.png',hover:'/img/unchecked.png'}"  /> 
      <input type="radio" id="vanner" value="vanner" name="friend" class="{src:'img/m.people.png',checked:'img/m.people.c.png',hover:'/img/unchecked.png'}"  /> 
    </div>

【问题讨论】:

  • 发布与该javascript对应的html..
  • 供将来参考:在 stackoverflow 上发布代码时不要使用制表符。如果您剪切和粘贴,则在发布之前将您的制表符转换为空格。 (我已经编辑了您的帖子以将标签更改为空格,并稍微清理了布局,因此无需对此进行任何更改)。
  • 当您说将“och van”添加到值变量时,您是什么意思?使用“och van”值向该数组添加另一个元素,或者您的意思是将该字符串附加到数组上的现有值,对不起,我不明白。
  • 我真的想通了。而不是使用 values.join 我只是用 + 交换它。工作正常,我将发布更新的代码。不过感谢您的帮助。

标签: javascript html switch-statement


【解决方案1】:

问题是 join 没有任何要加入的元素(数组只有一个元素),因此它不会将分隔符字符串放入数组中。您需要再添加两个元素才能在它们之间实际插入一些东西。我确实注意到这没有在任何地方拼写出来,但我想从名字上应该很明显。

【讨论】:

    【解决方案2】:

    固定。

    在开头定义变量,替换为:

    var och = " och ";
    var van = " och vän"
    var vanner =" och vänner";
    var nameout;
    

    以及更新后的 IF 语句:

    if (length==1)
    switch(selectedValue)
     {
       case "na":
       nameout = values;
       break;
       case "van":
       nameout = values + van;
       break;
       case "vanner":
       nameout = values + vanner;
       break;
    
     }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-01
      • 2021-07-29
      • 2016-10-09
      相关资源
      最近更新 更多