如何在单击时创建列表
how to create list onClick
我试图创建UL视图的列表,并为它们添加一个特定的onclick函数。这是我的代码:
function createList(divName) {
var divName = document.getElementById(divName);
for (var i in myListOfObjects) {
// create an arbitrary ul element
var ul = document.createElement('ul');
var s = myListOfObjects[i]; //get specific object (JSON object)
var subject = document.createElement('li'),
subjectContent = document.createTextNode("someText"); // subject
subject.appendChild(subjectContent);
ul.appendChild(subject);
ul.onclick = function() {
//pass the specific TEXT from the specific JSON object to the next page.
window.location.href = "NewPage.html" +
"?specificText=" + JSON.stringify(s);
};
// append the created ul element above to the div element
div.appendChild(ul);
}
}
我的问题是:当我运行该函数时,单击函数为"MyListOfObjects"中的所有对象获取相同的"TEXT"(文本是最后一个对象的文本,意味着最后一个物体覆盖了第一个),我检查了这个列表中的文本值不相同,所以我怎么知道是什么导致了这个问题呢?以及如何解决这个问题。
谢谢!
因此,我站不住脚,您需要一个UL标签,该标签内部有基于指定对象列表(myObjectList)的li标签。当你点击每个li时,你的页面会根据对象重定向到指定的页面。试用代码:
var myListOfObjects = [
{'TEXT': 'a1', 'ID': 0},
{'TEXT': 'a3', 'ID': 1},
{'TEXT': 'a2', 'ID': 2}
];//sample object list
function createList(divName) {
var div = document.getElementById(divName);
// a ul element has many li elements.
//this line out of for-loop. only one ul is enough.
var ul = document.createElement('ul');
var i = 0;//counter of
for (var objId in myListOfObjects) {
var obj = myListOfObjects[objId];
var subject = document.createElement('li');
subjectContent = document.createTextNode("someText"); // subject
subject.id = 'li_' + i;
subject.setAttribute('myId', i);// specified related object
subject.appendChild(subjectContent);
subject.onclick = function (event) {
var index = this.getAttribute('myId');
obj = myListOfObjects[index];
loc = "NewPage.html" + "?specificText=" + JSON.stringify(obj['TEXT']);
window.location.href = loc;
//remove comment to test
alert(loc);
};
ul.appendChild(subject);
i++;
}
div.appendChild(ul);
}
首先,创建一个div DOM对象,但将其分配给变量divName
。然后,稍后使用从未赋值的变量div
。
试试这个:
function createList(divName) {
var div = document.getElementById(divName);
for (var i in myListOfObjects) {
// create an arbitrary ul element
var ul = document.createElement('ul');
var s = myListOfObjects[i]; //get specific object (JSON object)
var subject = document.createElement('li'),
subjectContent = document.createTextNode(s); // subject
subject.appendChild(subjectContent);
ul.appendChild(subject);
ul.onclick = function() {
//pass the specific TEXT from the specific JSON object to the next page.
window.location.href = "NewPage.html" +
"?specificText=" + JSON.stringify(s["TEXT"]);
};
// append the created ul element above to the div element
div.appendChild(ul);
}
}
相关文章:
- 为对象数组创建列表项
- 如何在单击时创建列表
- 如何使用jquery创建列表
- 创建列表时,像在Ranker.com上一样创建多个项目
- 用于在Backbone中创建列表的Handlebars模板
- jQuery如何在页面重载时保留动态创建列表的选定选项
- 如何将动态创建的元素添加到我的动态创建列表中
- 如何使用 Javascript 和 jQuery 创建列表
- 如何从 JSON 数组创建列表
- 无法在 HTML 中创建列表
- 如何使用 AngularJS 创建列表视图
- 在 PHP 中的容器中创建列表
- 如何在文本区域中创建列表
- 在 JavaScript 中创建列表项
- 如何在 JavaScript 中创建列表参数来调用 WCF-Webservice
- 使用 Jscript 创建列表菜单运行时
- 从文本区域中的选定文本创建列表html
- 使用按钮创建列表
- 用于创建列表页列表项的谷歌应用程序脚本
- 从导入的JSON文件创建列表