2016-12-27 80 views
-1

我试图通过JavaScript摆脱嵌套数组数据并显示JavaScript的嵌套数组提取

我已创建这样

var products = {Elecrtonics:["Mobile","Tablet","Laptop"], 
    fasion:["celio","UCB","PE"],sports:["Puma","Rebock","Nike"] 
}; 

数组我有一个名为Electronics, Fasion, Sports三个按钮,当我在电子点击按钮它应该获取并显示电子阵列["Mobile","Tablet","Laptop"]相同的时间和体育

我应该怎么做呢?或者我会错在哪里?

我的HTML和JS的全是这样的

<div class = "container" id="formcontainer"> 
      <form> 
       <div class="form-group col-lg-4 col-md-offset-3"> 
        <h1>Welcome</h1> 
        <input type="text" class="form-control search" id="search" placeholder="What is in your mind?"> 

       </div> 
       <div class="form-group col-lg-4 col-md-offset-3"> 
        <button class="btn btn-primary" onClick="getData(Electronics)">Elecrtonics</button> 
        <button class="btn btn-primary" onClick="getData(Fasion)">Fasion</button> 
        <button class="btn btn-primary" onClick="getData(Sports)">Sports</button> 
       </div> 
       <p id = "myProducts"></p> 
      </form> 
     </div> 
     <script> 
     var products = {Elecrtonics:["Mobile","Tablet","Laptop"],fasion:["celio","UCB","PE"],sports:["Puma","Rebock","Nike"]}; 
      function getData (el){   
       document.getElementById("myProducts").innerHTML = products.el; 
        event.preventDefault() 
      } 
</script> 
+0

'产品[EL]',你需要传递参数的引号即'getSports('Sports')' – Satpal

+0

检查[link](https://jsfiddle.net/4o3s2j3L/) – CommonPlane

+0

我想知道我的方法是否正确,因为我无法获得所需的输出。我需要一些建议 –

回答

1

您需要使用Bracket Notation通过一个变量来访问属性。

document.getElementById("myProducts").innerHTML = products[el]; 

而且传递参数的报价将被视为字符串,否则他们将被视为标识符(变量)

<button class="btn btn-primary" onClick="getData('Electronics')">Electronics</button> 

对进场:

  1. 我会建议你使用addEventListener()绑定事件处理程序,而不是使用内联事件处理程序。
  2. 您可以使用data-*前缀属性存储任意数据

var products = { 
 
    Elecrtonics: ["Mobile", "Tablet", "Laptop"], 
 
    Fasion: ["celio", "UCB", "PE"], 
 
    Sports: ["Puma", "Rebock", "Nike"] 
 
}; 
 

 
var elements = document.querySelectorAll('.btn-primary'); 
 
for (var i = 0; i < elements.length; i++) { 
 
    elements[i].addEventListener('click', function(event) { 
 
    document.getElementById("myProducts").innerHTML = products[this.dataset.type]; 
 
    event.preventDefault() 
 
    }); 
 
}
<div class="container" id="formcontainer"> 
 
    <form> 
 
    <div class="form-group col-lg-4 col-md-offset-3"> 
 
     <h1>Welcome</h1> 
 
     <input type="text" class="form-control search" id="search" placeholder="What is in your mind?"> 
 

 
    </div> 
 
    <div class="form-group col-lg-4 col-md-offset-3"> 
 
     <button class="btn btn-primary" data-type="Elecrtonics">Elecrtonics</button> 
 
     <button class="btn btn-primary" data-type="Fasion">Fasion</button> 
 
     <button class="btn btn-primary" data-type="Sports">Sports</button> 
 
    </div> 
 
    <p id="myProducts"></p> 
 
    </form> 
 
</div>

+0

为什么首先将问题标记为重复,然后从重复中删除? – CommonPlane

+0

@SavaliyaRahul,由于OP评论_i想知道我的方法是否正确,因为我无法获得所需的输出。我需要一些建议_必须重新打开它,以便其他人可以提供__approach__的答案,这个问题没有涉及到这个问题。希望我的观点清楚 – Satpal

1
<div class = "container" id="formcontainer"> 
      <form> 
       <div class="form-group col-lg-4 col-md-offset-3"> 
        <h1>Welcome</h1> 
        <input type="text" class="form-control search" id="search" placeholder="What is in your mind?"> 

       </div> 
       <div class="form-group col-lg-4 col-md-offset-3"> 
        <button class="btn btn-primary" onClick="getProducts('Elecrtonics')">Elecrtonics</button> 
        <button class="btn btn-primary" onClick="getProducts('fasion')">Fasion</button> 
        <button class="btn btn-primary" onClick="getProducts('sports')">Sports</button> 
       </div> 
       <p id = "myProducts"></p> 
      </form> 
     </div> 


    <script> 
      var products = {Elecrtonics:["Mobile","Tablet","Laptop"],fasion:["celio","UCB","PE"],sports:["Puma","Rebock","Nike"]}; 
       function getProducts (el){ 

        document.getElementById("myProducts").innerHTML = products[el]; 
         event.preventDefault() 
       } 
    </script> 

检查https://jsfiddle.net/4o3s2j3L/