HTML-修改 JavaScript 代码说我的 HTML 元素未定义
HTML-modifying JavaScript Code says that my HTML Element is undefined
我目前正在尝试让一个简单的分类系统发挥作用。
为此,我创建了一个符合我需要的小类别 "class":
var categories = [];
function Category (id, name, ownedBy){
this.id = id;
this.name = name;
this.ownedBy = ownedBy;
categories[id] = this;
}
id 是类别的 ID。它的名称仅用于显示目的。 "ownedBy" 是超类别的 ID,如果没有,则 "none"。
填充我的类别数组后,我对其进行迭代并调用我的函数将类别添加到我的 HTML-代码:
function addHTMLCategory(catID){
var cat = categories[catID]; //Get the Category-"Object"
if(!cat) return; //If it doesn't exist, do nothing.
if(cat.ownedBy != "none"){ //If the category has a supercategory,
addHTMLCategory(cat.ownedBy); //Add it to the HTML first.
}
if(document.getElementById("cat"+catID)) return; //And if it already exists, dont add it again.
//ERROR-PART: If a category has a superclass, get the superclass element.
var contentElement = document.getElementById(cat.ownedBy=="none"?"categories":"cat"+cat.ownedBy);
var li = document.createElement("div");
li.id = "cat"+catID;
li.className = "category";
li.innerText = cat.name;
contentElement.appendChild(li);
}
初始HTML:
<div id="categories"></div>
这个函数检查Category是否有Super-Category,如果有,它首先添加这个:我这样做是为了避免应该添加类别的元素不存在。
不幸的是,恰恰发生了这种情况:当类别具有超类别时,"contentElement" 变量为空。谁能告诉我为什么?
问题是 Category 的 ownedBy 变量被设置为超类别的名称,而不是它的 ID(在我认为不相关的另一部分代码中)
我目前正在尝试让一个简单的分类系统发挥作用。 为此,我创建了一个符合我需要的小类别 "class":
var categories = [];
function Category (id, name, ownedBy){
this.id = id;
this.name = name;
this.ownedBy = ownedBy;
categories[id] = this;
}
id 是类别的 ID。它的名称仅用于显示目的。 "ownedBy" 是超类别的 ID,如果没有,则 "none"。
填充我的类别数组后,我对其进行迭代并调用我的函数将类别添加到我的 HTML-代码:
function addHTMLCategory(catID){
var cat = categories[catID]; //Get the Category-"Object"
if(!cat) return; //If it doesn't exist, do nothing.
if(cat.ownedBy != "none"){ //If the category has a supercategory,
addHTMLCategory(cat.ownedBy); //Add it to the HTML first.
}
if(document.getElementById("cat"+catID)) return; //And if it already exists, dont add it again.
//ERROR-PART: If a category has a superclass, get the superclass element.
var contentElement = document.getElementById(cat.ownedBy=="none"?"categories":"cat"+cat.ownedBy);
var li = document.createElement("div");
li.id = "cat"+catID;
li.className = "category";
li.innerText = cat.name;
contentElement.appendChild(li);
}
初始HTML:
<div id="categories"></div>
这个函数检查Category是否有Super-Category,如果有,它首先添加这个:我这样做是为了避免应该添加类别的元素不存在。
不幸的是,恰恰发生了这种情况:当类别具有超类别时,"contentElement" 变量为空。谁能告诉我为什么?
问题是 Category 的 ownedBy 变量被设置为超类别的名称,而不是它的 ID(在我认为不相关的另一部分代码中)