我已经在一个项目上工作了4天,完全是手工编写的,看看我在javascript的位置(我已经通过了codecademy课程)。我正在尝试创建一个基于浏览器的清单程序。到目前为止,我已经编写了一个可以动态创建<div>
的干净菜单界面。
这就是我对jsfiddle的看法:
http://jsfiddle.net/SdCaf/1/
我的问题:
taskToggle()
函数吗?是否有jquery方法来简化它?如果你有时间在小提琴中检查我的代码;它会轻易地使用mysql,还是我创建了一些愚蠢的冗余kludges,这会使更新变得困难?
已修复 为什么我的formatTask()
构造函数不会添加复选框和说明(如if / else中所示) - 我的错误是什么taskToggle()
功能,是我要添加的复选框<div>
,还是其他?
formatTask()
构造函数:
function formatTask(target, divId, content, description, complete) {
function taskToggle() {
if ($(this).hasClass("completeTask")) {
$("#" + divId).attr("class", "incompleteTask");
$("#" + divId + "Box").attr("class", "incompleteBox");
}
else if ($(this).hasClass("incompleteTask")) {
$("#" + divId).attr("class", "completeTask");
$("#" + divId + "Box").attr("class", "completeBox");
}
};
if (complete) {
var div = new formatDiv(target, divId, "completeTask", content, taskToggle, description);
formatDiv(divId, divId + "Box", "completeBox", "O");
div.addDescription();
}
else {
var div = new formatDiv(target, divId, "incompleteTask", content, taskToggle, description);
formatDiv(divId, divId + "Box", "incompleteBox", "[ ]");
div.addDescription();
}
}
当我调用它时,它似乎接受了所有参数,并且我在控制台中没有出现任何错误,但它似乎没有运行formatDiv(divId, divId + "box", "completeBox", "O");
和div.addDescription
。如果您点击小提琴的结果窗格中的“»显示列表”,您可以自己看到这一点(您将获得.addDescription()
函数应该如何工作的示例)< / p>
您可能希望提供的任何其他反馈将非常感谢。我需要知道我是否在正确的轨道上,或者我是否开始编写将变得不优雅的垃圾代码。
感谢你的时间,如果你给它!
答案 0 :(得分:1)
你确定当你这么说:
$("#" + divId).attr("class", "incompleteTask");
你不是这个意思吗?
$("#" + divId).addClass("incompleteTask");
$("#" + divId).removeClass("completeTask");
答案 1 :(得分:1)
这里的问题是您为任务分配的DOM ID是“atask!”这是无效的(因为!)字符。请确保您的ID和类名remove invalid characters!
答案 2 :(得分:0)
从formatTask()中分离taskToggle(),然后像这样简单地调用formatTask()中的taskToggle()
function formatTask(target, divId, content, description, complete) {
taskToggle();
if (complete) {
var div = new formatDiv(target, divId, "completeTask", content, taskToggle, description);
formatDiv(divId, divId + "Box", "completeBox", "O");
div.addDescription();
}
else {
var div = new formatDiv(target, divId, "incompleteTask", content, taskToggle, description);
formatDiv(divId, divId + "Box", "incompleteBox", "[ ]");
div.addDescription();
}
}
function taskToggle() {
if ($(this).hasClass("completeTask")) {
$("#" + divId).attr("class", "incompleteTask");
$("#" + divId + "Box").attr("class", "incompleteBox");
}
else if ($(this).hasClass("incompleteTask")) {
$("#" + divId).attr("class", "completeTask");
$("#" + divId + "Box").attr("class", "completeBox");
}
};