2017-08-01 54 views
0

我試圖在數組使用的onclick存儲關於複選框輸入代碼存儲如下所示:ONCLICK在陣列

function CheckBoxShortList(x,y,z) 
    { 
     var slide = ''; 
     var arr = []; 
     arr.push = x + ',' + y + ',' + z;  
     console.log(arr); 
    } 

複選框代碼如下:

<input type="checkbox" onclick="CheckBoxShortList('@item.Cid','@item.Hid','@k');"> 

它顯示了電流值console.log(arr)這是好的,但如果我使用console.log(arr.length)那麼它是0不遞增。 此外,我想,因爲我取消輸入框從數組中刪除。*

+0

將''var arr = []'移到你的函數之外 –

+0

檢查我的答案 –

回答

1

Array.prototype.push方法。你必須調用它,而不是給它分配一個值:

function CheckBoxShortList(x,y,z) { 
 
    var slide = ''; 
 
    var arr = []; 
 
    arr.push(x + ',' + y + ',' + z); // length is 1 
 
    console.log(arr); 
 
    console.log('Length:', arr.length); 
 
}
<input type="checkbox" onclick="CheckBoxShortList('a','b','c');">

這導致包含一個字符串數組:["a, b, c"]

如果你想一個一個地推值,這樣做:

arr.push(x); // length is 1 
arr.push(y); // length is 2 
arr.push(z); // length is 3 

這導致包含三個值的數組:["a", "b", "c"]

刪除它,使用Array.prototype.pop

arr.push(x); // length is 1 
arr.push(y); // length is 2 
arr.push(z); // length is 3 
arr.pop(); // length is 2 
arr.pop(); // length is 1 
+0

你能給我一個例子先生 –

+0

結果應該是什麼樣子? – PeterMader

+0

這是顯示,但我可以看到它的計數和長度是返回0. –

0

定義你的函數外陣列和解僱你的事件,而不是onchange()onclick()


 
    
 
    
 
    var arr = []; 
 
    function CheckBoxShortList(x,y,z) { 
 
     if($('#test').is(":checked")){ 
 
      var slide = ''; 
 
      arr.push(x + ',' + y + ',' + z);  
 
      console.log(arr); 
 
     }else{ 
 
      arr.pop(x + ',' + y + ',' + z); 
 
      console.log(arr); 
 
     } 
 
    }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input id="test" type="checkbox" onchange="CheckBoxShortList('@item.Cid','@item.Hid','@k');">

0

實際上,你可以只使用數組的切片函數在一個參數對象上,它會con它用vert到一個標準的JavaScript數組

function CheckBoxShortList() { 
 

 
    var arr = []; // whatever your array 
 

 
    var args = Array.prototype.slice.call(arguments); // array 
 

 
    arr.push(args.join(',')); // string you push 
 

 
    console.log(arr); // show o/p 
 

 
    console.log(arr.length); // it shows 1 because you are pushing only one element to array 
 
}
<input type="checkbox" onclick="CheckBoxShortList('a','b','c');">

+0

先生,這是真實的,但我的輸入複選框是動態的最多30列表我想在數組中添加這30個。 –

+0

@RajatShetty即使輸入'CheckBoxShortList('a','b','c',1,2,3,4,5,6,7,8,9,10,11,12, 13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30);'像這樣,它將用逗號 –

0

早些時候你保存你的價值觀在一個名爲其命名爲pusharr的對象。
考慮到你的值被作爲一個字符串存儲在一個數組中,我們在其上調用push方法。

var arr = []; 
function CheckBoxShortList(x,y,z) 
    { 
     var slide = ''; 

     arr.push(x + ',' + y + ',' + z);  
     console.log(arr); 
    } 

考慮你的價值觀作爲PeterMader說要單獨

var arr = []; 
function CheckBoxShortList(x,y,z) 
    { 
     var slide = ''; 

     arr.push(x); 
     arr.push(y); 
     arr.push(z); 
     console.log(arr); 
    } 
+0

加入每個元素,即如果在單次調用時它將存儲這三個值,但是當我再次單擊後,那麼在數組上創建了新的舊值。 –

+0

@RajatShetty你想刷新prev值嗎? –

0

存儲,Array.prototype.push是一種方法,它要傳遞這樣的說法:

arr.push(x + ',' + y + ',' + z); 

如果你想要知道爲什麼你的代碼沒有產生錯誤,因爲數組是JavaScript中的(明顯)對象。所以當你說array.attr = value時,數組對象被分配一個屬性attr,其值爲value。在你的情況下,數組被賦予一個名爲push的屬性來存儲你的值,然而,數組本身作爲一個列表仍然是空的,這就是爲什麼數組長度爲零,因爲附加屬性不會改變數組的長度。

如果您希望單獨添加項目,您可以單獨使用.push()。您還可以使用arr.contact(otherArray)將另一個陣列添加到原始陣列。

希望有所幫助。

+0

先生我的輸入複選框是動態的,說30是這些在列表中我想添加這些數組中的30這樣的方法「arr.push(x +','+ y +','+ z);」 –

+0

嗨Rajat,我更新了我的答案。您可以單獨推送每個項目。相反,如果在不同數組中有多個項目,則可以使用'concat()'將數組添加到'arr'。再次告訴我,如果我能爲你提供更多的幫助。 – Y2H

+0

謝謝Y2H我會嘗試這種方法 –