Javascript排序列表和内容
Javascript ordered list and content
所以我的问题是在有确切内容的有序列表中创建新元素。我有这个家庭作业,我只学习JS几天。我必须做一个订购清单和一个按钮添加项目。当我点击按钮时,它必须在有序列表中创建一个新的元素,其中包含下一个数字。所以现在当我点击该按钮时,会出现提示窗口,我写的文本会出现在下一个"li"中,但我不知道下一个"li"将如何显示项目1、项目2、项目3等。我还需要隐藏第一个元素,因为"项目1:文本总是显示">
function addItem() {
var item = prompt("Please insert a text", "It will be added to the list");
if (item != null) {
var n = 0;
var ol = document.getElementById("myList");
var li = document.createElement("li");
ol.appendChild(li);
li.innerHTML += "item " + n + ':' + item;
} else {
document.getElementById("text").innerHTML = " ";
}
}
#nested {
width: 95%;
height: 100%;
border: 1px solid red;
margin-left: auto;
margin-right: auto;
}
#large {
width: 80%;
height: 100%;
border: 1px solid blue;
margin-left: auto;
margin-right: auto;
}
ol {
list-style-type: arabic;
list-style-position: inside;
margin-top: 10px;
margin-right: 30px;
}
.right {
float: right;
}
<div id="large">
<div id="nested">
<form method="get">
<input type="button" id="resizeBut" name="resize" value="Collapse" onclick="change()" />
<br />
<br />
<input type="button" id="newItem" name="items" value="Add Item" onclick="addItem()" />
</form>
<ol reversed="reversed" class="right" id="myList">
Unordered list
<li>item 1:<span id="text">Text</span>
</li>
</ol>
</div>
</div>
function
外部的贴花varn
Increment
在每个函数调用中
var n = 1;
function addItem() {
var item = prompt("Please insert a text", "It will be added to the list");
if (item != null) {
++n;
var ol = document.getElementById("myList");
var li = document.createElement("li");
li.innerHTML = "item " + n + ':' + item;
ol.appendChild(li);
} else {
document.getElementById("text").innerHTML = " ";
}
}
#nested {
width: 95%;
height: 100%;
border: 1px solid red;
margin-left: auto;
margin-right: auto;
}
#large {
width: 80%;
height: 100%;
border: 1px solid blue;
margin-left: auto;
margin-right: auto;
}
ol {
list-style-type: arabic;
list-style-position: inside;
margin-top: 10px;
margin-right: 30px;
}
.right {
float: right;
}
<div id="large">
<div id="nested">
<form method="get">
<input type="button" id="resizeBut" name="resize" value="Collapse" onclick="change()" />
<br />
<br />
<input type="button" id="newItem" name="items" value="Add Item" onclick="addItem()" />
</form>
<ol reversed="reversed" class="right" id="myList">
Unordered list
<li>item 1:<span id="text">Text</span>
</li>
</ol>
</div>
</div>
答案取决于您是否能够使用库。如果你可以使用jQuery,这会容易得多,如果不能,它仍然是可行的,只是更多的代码。我会写一个答案。。。
jQuery应答。。。
function addItem() {
var item = prompt("Please insert a text", "It will be added to the list");
if (item != null) {
var count = $('#myList').find('ol').find('li').length;
if(count > 1) {
$('#myList').find('ol').find('li').hide();
}
var nextItem = count + 1;
$('#myList').find('ol').append('<li>Item ' + nexItem + ':' + item + '</li>');
} else {
$('#text').html(' ');
}
}
非jQuery(Vanilla JavaScript(。。。
function addItem() {
var item = prompt("Please insert a text", "It will be added to the list");
if (item != null) {
var n = document.getElementById("myList").getElementsByTagName("li").length;
if(n > 0) {
var elements = document.getElementById("myList").getElementsByTagName("li");
for(var i = 0; i < n; i++) {
elements[i].style.visibility = "hidden";
elements[i].style.display = "none";
}
}
var nextItem = n + 1;
var ol = document.getElementById("myList");
var li = document.createElement("li");
ol.appendChild(li);
li.innerHTML += "item " + nextItem + ':' + item;
} else {
document.getElementById("text").innerHTML = " ";
}
}
还有一种方法可以加快速度,将计数存储为变量,然后每次递增以获得新的数字,这样就不会每次都计算DOM元素。这将是一个简单的补充。这是一个例子。。。
//inside a <script > tag
var count = 0;
function addItem() {
var item = prompt("Please insert text here", "It will be added to the list");
if(item != null) {
if(count > 0) {
var items = document.getElementById("myList").getElementsByTagName("li");
for(var i = 0; i < items; i++) {
items[i].style.visibility = "hidden";
items[i].style.display = "none";
}
}
count += 1;
var list = document.getElementById("myList");
var li = document.createElement("li");
li.innerHTML = "item " + count + ": " + item;
list.getElementsByTagName("ol").append(li);
} else {
document.getelementById("text").innerHTML = " ";
}
}
我希望这能有所帮助。有很多。。。解决这一问题的方法有很多,这些只是其中的一对。如果这不起作用或者你需要更多帮助,请告诉我。
您还可以随时计算列表中有多少li
,并将其用于n
。对于删除,您只需要在第一次通过时隐藏或删除项目。
var ADDED_ITEMS = 0;
function addItem() {
var placeholder = "It will be added to the list";
var item = prompt("Please insert a text", placeholder);
if (item != null) {
var ol = document.getElementById("myList");
// Remove the existing LI on the first pass
if (++ADDED_ITEMS == 1)
ol.removeChild( ol.querySelector('li') );
// Get count of LI in list
var n = ol.querySelectorAll('li').length + 1;
// Create new LI
var li = document.createElement("li");
ol.appendChild(li);
li.innerHTML += "item " + n + ':' + item;
} else {
document.getElementById("text").innerHTML = " ";
}
}
#nested {
width: 95%;
height: 100%;
border: 1px solid red;
margin-left: auto;
margin-right: auto;
}
#large {
width: 80%;
height: 100%;
border: 1px solid blue;
margin-left: auto;
margin-right: auto;
}
ol {
list-style-type: arabic;
list-style-position: inside;
margin-top: 10px;
margin-right: 30px;
}
.right {
float: right;
}
<div id="large">
<div id="nested">
<form method="get">
<input type="button" id="resizeBut" name="resize" value="Collapse" onclick="change()" />
<br />
<br />
<input type="button" id="newItem" name="items" value="Add Item" onclick="addItem()" />
</form>
<ol reversed="reversed" class="right" id="myList">
Unordered list
<li>item 1:<span id="text">Text</span></li>
</ol>
</div>
</div>
相关文章:
- 为什么HTML5拖放的目标是孩子?(可排序列表)
- 当属性不一致时,如何根据属性对JS对象列表进行排序
- jQuery UI可排序-多连接列表拖动
- 如何在javascript中通过rtl字母表对列表进行排序和分组
- 如何在Javascript中创建排序、拖放多级列表
- 使用选项组对下拉列表进行排序
- JQuery根据连字符前的首字母对列表进行排序
- 可排序和可丢弃的淘汰列表
- 在Javascript中,当使用array.prush方法向列表中添加项目时,如何对其进行排序
- 使用JS或新查询对列表进行排序
- 对Soundcloud自定义播放器播放列表的顺序进行排序
- 如何在角度js的自动完成下拉列表中对项目列表(按字母顺序)进行排序
- 尝试将长列表排序为单独的列
- 不使用排序数组的动态列表排序
- 使用角度 js 按顺序列表排序
- 在JavaScript和MySQL中存储列表排序顺序的替代方法
- 如何用Vue.js动画化列表排序
- 按字母顺序对列表排序,末尾为字符
- IE7,jQuery-1.6.2:列表项向下移动到包含元素的下面(多列表排序)
- 按元素的值对列表排序