function getTaskProperties(node) {
var data = {};
data.name = $(node).children(".nameHere").innerHtml;
data.date = $(node).children(".dateHere").innerHtml;
data.class = $(node).children(".classhere").innerHtml;
console.log($(node).children(".nameHere")); // returns something like:
//[p.nameHere, prevObject: n.fn.init[1], context: div#entryTemplate.entry, jquery: "1.11.0", constructor: function, selector: ""…]
console.log($(node).children(".nameHere").innerHtml); //returns undefined
return data; }
function getAllTasks() {
var tasks = [];
$(".entry") .each(function (i, e) {
console.log (getTaskProperties(e));
})
for (var i; i<tasks.length; i++) {
console.log(tasks[i]);
}
}
此脚本运行一系列HTML元素,如下所示:
<div class = "entry" id = "entryTemplate">
<a class = "trashButton"><i class="fa fa-trash-o"></i></a>
<p class = "classHere">History</p>
<p class = "dateHere">Due: Monday</p>
<p class = "nameHere">Graphic Organizer</p>
</div>
还有一些其他元素包含在&lt; .entry&gt;
的JQuery选择器中我的问题是,当我运行$(node).children().innerHtml
时,它会返回undefined
。
如何正确获取.classHere
,.nameHere
和.dateHere
的值?
答案 0 :(得分:2)
$(node).children(".nameHere").html();
$(node).children(".nameHere")
是jQuery对象,您无法直接使用.innerHTML
$(node).children(".nameHere")[0].innerHTML;
$(node).children(".nameHere").get(0).innerHTML;
答案 1 :(得分:2)
.innerHTML
是一个DOM属性名称(你使用了错误的大小写)。
$(node).children(".nameHere")
生成一个jQuery对象。
.innerHTML
不是jQuery对象的属性(它是DOM对象的属性),因此不适用于jQuery对象。
您可以使用所有jQuery:
$(node).children(".nameHere").html()
或者您可以从jQuery对象获取DOM对象,然后使用.innerHTML
,如下所示:
$(node).children(".nameHere")[0].innerHTML
作为解释 - jQuery对象和DOM对象不是一回事。它们是具有不同属性和方法的不同类型的对象。
jQuery对象包含一个DOM对象数组(在其中)。因此,当您想对DOM对象执行操作时,您可以使用jQuery方法将该方法应用于jQuery对象内的DOM对象,也可以从jQuery对象中获取DOM对象并应用DOM方法/属性直接指向DOM对象。