簡體   English   中英

兩種數組類型合而為一

[英]Two array types into one function

我有一個表單,您單擊一個按鈕,然后需要更改元素的不透明度並選擇單選或復選框。 我在表單中有一堆,所以在創建這種類型的數組時需要幫助。 一些ID是dp001,dp002…。 dp050,因此在到達dp010時,必須有一個條件在其后附加前綴。 我要更改不透明度的元素集合。 元素的其他集合沒有特定順序,但我想收集它們並進行檢查。 我在某個地方創建了FUBAR :)

小提琴無法正常工作……真的讓我失望了,不知道為什么jsfiddle拒絕為我加載JavaScript。 這是Fiddle小提琴嗎?

在我的Web服務器上,警報可以正常運行,並且不執行我想要的操作。 Javscript在我的服務器上運行檢查出來。

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;

 }

我覺得你需要

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
  • 您可以使用三元條件來簡化代碼(可選)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM