2017-05-08 123 views
0

我对JS技术相当陌生,并试图弄清楚是否可以多次创建相同的函数(例如在某个循环中)。主要问题是我在foreach循环中创建按钮和复选框。问题是我不知道列表lista中有多少元素,以及需要多少JS功能来显示div内容。那么有没有什么办法可以像下面这样的代码来解决这个问题,或者如果有的话,我应该尝试一些其他的方法,请问我可以给我一些建议,我该如何解决它?如何在JavaScript中增加功能

我把下面我的代码部分:

HTML代码:

List<string> lista = ViewBag.Dane; 
<div id="myDropdown" class="dropdown-content"> 
@foreach (var elem in lista){ 
<label><input id="machine" type="checkbox" value="A" onchange="changeA()"/>choose all </label> 
<button id="buttonA" type="button" class="btn btn-primary" onclick="showDivsA()">@elem</button> 
<div id="myDropdownA" class="dropdown-content"> 
<label><input id="machine" type="checkbox" value="A" onchange="change()"/>choose all </label> 
<button id="buttonA" type="button" class="btn btn-primary" onclick="showDivsAa()">MachineB2</button> 
<div id="myDropdownAa" class="dropdown-content"> 
<!-- div's content --> 
</div></div> 

JavaScript代码:

function changeA() { 
if (document.getElementById('buttonA').disabled === true){ 
$('#buttonA').removeAttr('disabled');} 
function showDivsA() { 
if (document.getElementById('myDropdownA').style.display === "none") { 
     document.getElementById('myDropdownA').style.display = "block"; 
    } 
    else { 
     document.getElementById('myDropdownA').style.display = "none";} 

预先感谢您的帮助。

+0

您应该使用CSS代替。 – SLaks

+0

您正在查找参数。 – SLaks

+0

您需要创建一个可重用的函数,而不是复制该函数。 – epascarello

回答

0

编写一个函数并相应地从HTML传递参数。例如,

// call this function like changeA('buttonA') from HTML 
function changeA(buttonIdStr) 
{ 
    if (document.getElementById(buttonIdStr).disabled === true) 
    { 
     $('#' + buttonIdStr).removeAttr('disabled'); 
    } 
} 

// call this function like showDivsA('myDropdownA') from HTML 
function showDivsA(dropDownIdstr) 
{ 
    if (document.getElementById(dropDownIdstr).style.display === "none") 
    { 
     document.getElementById(dropDownIdstr).style.display = "block"; 
    } 
    else 
    { 
     document.getElementById(dropDownIdstr).style.display = "none"; 
    } 
} 
+0

感谢您的帮助!有用! :) – Kodziks13