javascript中是否有任何方法/方式可以动态添加子节点到列表元素?

发布于 2024-10-03 12:17:51 字数 618 浏览 0 评论 0原文

如果我有一个无序列表,就像

<ul id="list">
<li>Helo World-1</li>
<li>Helo World-2</li>
<li>Helo World-3</li>
</ul>

我想动态添加一个子列表项一样。 javascript 中有没有任何方法可以做到这一点。我怎么能做到呢。 编辑 我需要一个下一级的项目,即我在 OP 中提到的 Helo World 的子列表,如下所示。这里的另一个问题是我需要这些项目成为我的代码的永久组成部分。

 <ul id="list">
    <li>Helo World-1</li>
    <li>Helo World-2</li>
    <li>Helo World-3</li>
       <ul>
         <li>One</li>
         <li>Two</li>
      </ul>
 </ul> 

If I have an unordered list like

<ul id="list">
<li>Helo World-1</li>
<li>Helo World-2</li>
<li>Helo World-3</li>
</ul>

I want to add a sublist item to it dynamically. Is there any method in javascript to do that. How could I do it.
edit
I need an item at next level, i.e. a sub list of Helo World that I mentioned in OP too, something like as under. One more issue here is that I need the items to be a permanent part of my code.

 <ul id="list">
    <li>Helo World-1</li>
    <li>Helo World-2</li>
    <li>Helo World-3</li>
       <ul>
         <li>One</li>
         <li>Two</li>
      </ul>
 </ul> 

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

感悟人生的甜 2024-10-10 12:17:51

使用纯 DOM 方法:

var ul = document.getElementById("list");
var li = document.createElement("li");
li.appendChild(document.createTextNode("Your list item text"));

将列表项添加到列表末尾:

ul.appendChild(li);

在现有列表项之间插入列表项(请注意,在此示例中,您必须为现有列表项提供 id):

ul.insertBefore(li, document.getElementById("list_item_id"));

更新

如果您想要添加嵌套列表,您需要将其添加到列表项而不是直接添加到列表中才能使其有效:

var lis = ul.getElementsByTagName("li");

var lastLi = lis[lis.length - 1];

var nestedUl = document.createElement("ul");
var nestedLi = nestedUl.appendChild(document.createElement("li"));
nestedLi.appendChild(document.createTextNode("One"));

lastLi.appendChild(nestedUl);

Using pure DOM methods:

var ul = document.getElementById("list");
var li = document.createElement("li");
li.appendChild(document.createTextNode("Your list item text"));

To add the list item to the end of the list:

ul.appendChild(li);

To insert the list item between existing list items (note you'd have to give the existing list item an id in this example):

ul.insertBefore(li, document.getElementById("list_item_id"));

Update

If you want to add a nested list, you'll need to add it to a list item rather than directly inside the list in order for it to be valid:

var lis = ul.getElementsByTagName("li");

var lastLi = lis[lis.length - 1];

var nestedUl = document.createElement("ul");
var nestedLi = nestedUl.appendChild(document.createElement("li"));
nestedLi.appendChild(document.createTextNode("One"));

lastLi.appendChild(nestedUl);
凉薄对峙 2024-10-10 12:17:51
$('<li>...</li>').appendTo($('#list')); /* in jquery */

否则直接js

var mylist = document.getElementById('list');
mylist.appendChild(document.createElement('li'));

注意:如果你还需要设置文本

var mylist = document.getElementById('list');
var newli  = document.createElement('li');

newli.innerHTML('Helo World ' + mylist.getElementsByTagName('li').length + 1);
mylist.appendChild(newli);
$('<li>...</li>').appendTo($('#list')); /* in jquery */

otherwise straight js

var mylist = document.getElementById('list');
mylist.appendChild(document.createElement('li'));

Note: if you need to set also text

var mylist = document.getElementById('list');
var newli  = document.createElement('li');

newli.innerHTML('Helo World ' + mylist.getElementsByTagName('li').length + 1);
mylist.appendChild(newli);
浪推晚风 2024-10-10 12:17:51

我在 jsfiddle 中创建了一个示例,

var el = document.getElementById("list");

var li = document.createElement("li");
li.innerHTML = "item";

el.appendChild(li);

您可以通过 w3schools html dom 参考 了解如何使用 javascript 操作 html 元素。

但我认为更干净的方法是使用像 jQuery 这样的第三方库,这将允许更简单的方法来操作统治。

例如:如果使用 jQuery,这将像

$("<li>...</li>").appendTo("#list")

编辑一样简单:
根据您的编辑,您可以尝试此操作,

var ul = document.getElementById("list");
ul.children[2].innerHTML = "<ul><li>sub 1</li><li>sub 2</li><li>sub 3</li></ul>";

这将获取

    的第三个

  • 并向其添加一个子列表

I've created a sample in jsfiddle

var el = document.getElementById("list");

var li = document.createElement("li");
li.innerHTML = "item";

el.appendChild(li);

You can go through the w3schools html dom reference to see how we can manipulate the html elements using javascript.

But I think the cleaner way will be to use a third party library like jQuery which will allow a much easier way to manipulate the dom.

ex: If use jQuery this will be as easy as

$("<li>...</li>").appendTo("#list")

EDIT:
Based on your edit you can try this,

var ul = document.getElementById("list");
ul.children[2].innerHTML = "<ul><li>sub 1</li><li>sub 2</li><li>sub 3</li></ul>";

This will get the 3rd <li> of the <ul> and add a sublist to it

烟酒忠诚 2024-10-10 12:17:51

AFAIK,列表没有等效的 HTML DOM 对象。
无论如何你可以使用innerHTML:

var list = document.getElementById("list");
var item = "<li>New Item</li>";
list.innerHTML += item;

AFAIK, there is no equivalent HTML DOM object for list.
Anyway you can use the innerHTML:

var list = document.getElementById("list");
var item = "<li>New Item</li>";
list.innerHTML += item;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文