javascript - 单击时显示关联数组的元素

标签 javascript html css

我有四个 div 元素,并且我的数组中有四个元素。我想要得到这样的东西:

当用户单击第一个 div 元素(class .news)时,数组第一个元素的“值”将显示在 div 内部 #选定的新闻

Here's my code

我的问题是我不明白如何关联 div 和数组元素。

再次编码:

var newsListData = [
  {
	    "group" : "science",
	    "title" : "Text 1",
	    "image" : "images/news1.jpg",
	    "content" : "Text text text"
	},
	{
	    "group" : "science",
	    "title" : "Text 2",
	    "image" : "images/news2.jpg",
	    "content" : "Text text text"
	},
	{
	    "group" : "science",
	    "title" : 'Text 3',
	    "image" : "images/news3.jpg",
	    "content" : "Text text text"
	},
	{
	    "group" : "economics",
	    "title" : 'Text 4',
	    "image" : "images/news4.jpg",
	    "content" : "Text text text"
	}]




var selected;
function elem() {
  selected.innerHTML = "";
  for (var i = 0; i < this.children.length; i++) {
    selected.appendChild(this.children[i].cloneNode(true));
  }
}

document.addEventListener("DOMContentLoaded", function() {
  var selectedNews = newsListData​ /* stuck HERE */
  for (var i = 0; i < selectedNews.length; i++) {
    selectedNews[i].addEventListener("click", elem);
  }
  selected = document.getElementById("selectedNews")
});
#selectedNews {
  border : 1px solid gray;
  margin : 10px;
  padding : 5px;
}

.news{
  background-color : green;
  border : 2px solid black;
  padding : 4px;
  margin-top : 2px;
  text-align : center;
}
<div id="newsList">
<input type="text" placeholder="filter..." id="filter"/>	
	<div  class="list"> 
	<div id="0-news" class="news">One</div>
    <div id="1-news" class="news">Two</div>
    <div id="2-news" class="news">Three</div>
    <div id="3-news" class="news">Last one</div>
    

<article id="selectedNews">
	<h1>Titre</h1>
	<figure>	
		<img src="" alt="titre"/>
	</figure>
	<div id="content">
		bla bla
	</div>
</article>    

最佳答案

您需要知道要显示的数组项的索引。我将通过将事件监听器附加到 .news 元素来完成此操作,如下所示:

<div id="0-news" class="news" onclick="display(0)">One</div>

在你的 JS 中

window.display = function(index) {
    var data = newsListData[index]; // get the right data from the array
    ...
}

演示 https://jsfiddle.net/qqyvu3dm/4/

编辑根据循环数据创建按钮:

  var newsList = document.getElementById("newsList");
  var button;

  for (var i = 0; i < newsListData.length; i++) {
    // create button element in memory
    button = document.createElement("button"); 

    // set id attribute
    button.setAttribute("id", index + "-news"); 

    // attach event listener, pass i as pointer to your array element
    button.onclick = display(i); 

    // append the button into #newsList div
    newsList.appendChild(button);
  }

关于javascript - 单击时显示关联数组的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36847533/

相关文章:

javascript - 减少 Angular JS 中的分页加载时间

html - 什么是用于重组文本的简单网页编译器?

jquery - 如何使用 jQuery 切换 CSS 转换?

javascript - 如何使 2 个不同高度的 DIV 在滚动时同时到达页面底部?

html - 如何使用div绘制曲线?

javascript - 在 Node.js 中不使用库使用 websockets 的简单方法是什么?

javascript - 更改存储在数组中的许多节点的碰撞行为

javascript - 我正在尝试配置一个简单的 DbHelper,但在执行相同操作时出现错误

javascript - 使用 JQuery 或 Javascript 创建选项卡

html - CSS margin-top 使 div 超出父级的高度