我正在开发一个纯js任务列表应用程序。我正在尝试添加一项帮助用户上下移动任务的功能。用户可以在点击某个按钮时向上或向下移动某个特定任务。我可以用jQuery来做到这一点,但不知道如何用纯js做到这一点。这里是DEMO用纯js创建任务列表并上下移动项目
可能有人请帮助我,我怎样才能提高我的代码
HTML质量
<div class="task-list-app">
<header class="main-header">
<h1>Tasks list <span class="version"></span></h1>
</header>
<section class="main-section">
<div>
<input type="text" id="add-new-task" name="add-new-task" placeholder="Type task name and hit Enter ">
</div>
<ul id="tasks-list"></ul>
</section>
<div class="status-bar">
<span class="app-status"></span>
</div>
</div>
JS
function TaskList() {
"use strict";
var appVersion = '1.0.0v';
function setAppStatus($status) {
var $appStatusElm = document.querySelector(".app-status");
$appStatusElm.textContent = $status;
}
function addTask() {
var $addNewTask = document.querySelector("#add-new-task");
$addNewTask.addEventListener("keypress", function (e) {
if (e.which == 13) {
var taskName = this.value;
appendNewTask(taskName);
this.value = '';
}
return false;
});
}
function appendNewTask (taskName) {
var $taskList = document.querySelector("#tasks-list");
var $taskElm = document.createElement("li");
var $btnsWrapper = document.createElement("div");
var $deleteBtn = document.createElement('a');
var $moveUpBtn = document.createElement('a');
var $moveDownBtn = document.createElement('a');
var $taskNameElm = document.createElement('span');
var hrefAttr = document.createAttribute("href");
var buttons = [];
hrefAttr.nodeValue ="#";
$taskElm.appendChild($taskNameElm);
$taskNameElm.textContent = taskName;
$taskList.appendChild($taskElm);
$taskElm.appendChild($btnsWrapper);
setTimeout(function() {
$taskElm.classList.add("remove-border");
}, 300);
$deleteBtn.textContent = "Delete";
var $deleteBtnHref = hrefAttr.cloneNode(true);
$deleteBtn.setAttributeNode($deleteBtnHref);
$moveUpBtn.textContent = "Move up";
var $moveUpBtnHref = hrefAttr.cloneNode(true);
$moveUpBtn.setAttributeNode($moveUpBtnHref);
$moveDownBtn.textContent = "Move down";
var $moveDownBtnHref = hrefAttr.cloneNode(true);
$moveDownBtn.setAttributeNode($moveDownBtnHref);
buttons = [$deleteBtn, $moveDownBtn, $moveUpBtn];
buttons.forEach(function (btn) {
$taskElm.querySelector('div').appendChild(btn);
});
$deleteBtn.addEventListener('click', function (e) {
e.path[3].removeChild(e.path[2]);
setAppStatus("Task " + taskName + " has been removed");
})
setAppStatus("Task " + taskName + " has been recorded");
}
this.start = function() {
var $versionElm = document.querySelector(".main-header .version");
$versionElm.textContent = appVersion;
addTask();
setAppStatus("Ready To Use");
};
}
var app = new TaskList();
app.start();
这个问题已经回答了完美的位置:http://stackoverflow.com/questions/2943140/how-to-swap-html-elements-in-javascript 给你:)我一直多年来一直在抓取StackOverflow,但最近才开始提供和发布。不知道约定是什么。如果您根据该帖子提出解决方案,您可以随时回到这里并回答自己的问题,以帮助任何可能遇到此问题的人而不是其他人。 –
好的,仍然是我的问题的一部分是没有答案..我如何提高代码的质量。所以我要离开它 –