简体   繁体   English

无法在JavaScript中使用getElementById检索li或ul

[英]Cannot retrieve an li or ul using getElementById in JavaScript

I can get an HTML object using JavaScript using the function document.getElementById('id'). 我可以使用JavaScript使用函数document.getElementById('id')获得HTML对象。 If I get a form, then I can further specify an element in the form by doing something like the following: 如果获得表单,则可以通过执行以下操作来进一步指定表单中的元素:

document.getElementById('form_id').form_element.value="hello world";

This works if the elements in the form are inputs and text areas. 如果表单中的元素是输入和文本区域,则此方法有效。 (I haven't tried them all...) However, this doesn't work for unordered lists or list elements. (我还没有尝试过所有方法...)但是,这不适用于无序列表或列表元素。 I can't specify an li element once I get an element using a form. 一旦使用表单获取元素,就无法指定li元素。 Does anyone know why that is? 有人知道为什么吗? Also, the unordered list is used across different forms, so I can't give it a unique id. 另外,无序列表用于不同的形式,所以我不能给它一个唯一的ID。 (Unless I copy paste code everywhere...) (除非我将粘贴代码复制到各处...)

You can run .getElementsByTagName('ul') on any DOM element. 您可以在任何DOM元素上运行.getElementsByTagName('ul') For example, using the following HTML: 例如,使用以下HTML:

<form id="form_id">
    <input name="form_element"/>
    <ul>
        <li>foo</li>
        <li>bar</li>
    </ul>
</form>

Do this: 做这个:

var form = document.getElementById('form_id');
form.form_element.value = 'hello world';

var ul = form.getElementsByTagName('ul');
ul = ul && ul[0];
console.log(ul);

var lis = form.getElementsByTagName('li');
for (var i = 0; i < lis.length; i++) {
    console.log(lis[i].innerText);
}

jsFiddle here: http://jsfiddle.net/YSpVg/1/ jsFiddle在这里: http : //jsfiddle.net/YSpVg/1/

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM