两种数组类型合二为一

时间:2014-05-13 22:38:02

标签: javascript arrays

我有一个表单,您单击按钮,元素集合需要更改不透明度并选中单选按钮或复选框。我在表单中有很多这些,所以我需要帮助创建这种类型的数组。一些ID是dp001,dp002 .... dp050所以当它到达dp010时需要有一个附加前缀的条件。这个元素集合我想改变不透明度。其他元素集合没有任何特定的顺序,但我想收集它们并进行检查。在某处我创建了一个FUBAR :)

小提琴赢了工作......真的让我不知道为什么jsfiddle拒绝为我加载javascript。 Is This Fiddle FUBAR?

在我的网络服务器上,警报可以正常运行并不能满足我的需求。 Javscript works on my server check it out.

HTML

<div id="dp001">Item #1 <input type="radio" id="abc005"></div>
<div id="dp002">Item #2 <input type="radio" id="abc008"></div>
<div id="dp003">Item #3 <input type="checkbox" id="abc010"></div>
<div id="dp004">Item #4 <input type="checkbox" id="abc020"></div>
<div id="dp005">Item #5</div>
<div id="dp006">Item #6</div>
<div id="dp007">Item #7</div>
<div id="dp008">Item #8</div>
<div id="dp009">Item #9</div>
<div id="dp010">Item #10</div>
<div id="dp011">Item #11</div>
<button type="button" onclick="DoStuff();">Click</button>

JAVASCRIPT

  function DoStuff() {
   var items = null;
   var checkMe = ["abc005" , "abc0008" , "abc010" , "abc020"];
   for (i=1 ; i < 12 ; i++) {
   if (i < 10) {
   items = 'dp00' + i;
   } else {
   items = 'dp0' + i;
   }
  }
   alert("ding");
   document.getElementById("items").style.opacity="0.5";
   document.getElementById("checkMe").checked = true;

 }

1 个答案:

答案 0 :(得分:1)

我认为你需要

function DoStuff() {
    var checkMe = ["abc005" , "abc0008" , "abc010" , "abc020"];
    for (var i=1; i < 12; i++) {
        var items = 'dp0' + (i<10 ? '0' : '') + i;
        document.getElementById(items).style.opacity = 0.5;
    }
    for (var i=0, l=checkMe.length; i<l; ++i)
        document.getElementById(checkMe[i]).checked = true;
}

代码问题:

  • "items"是一个文字字符串,而不是变量items"checkMe"
  • 也是如此
  • 您必须更改循环内的每个元素,而不是外部。
  • 您不会声明变量i
  • 您可以使用三元条件来简化代码(可选)