Javascript 使用getElementById填充页面上的元素

Javascript 使用getElementById填充页面上的元素,javascript,html,ajax,Javascript,Html,Ajax,我是Ajax新手,但我知道您可以使用getelementbyid来更新页面上具有该id的任何元素。我想知道的是,如果页面上的某个元素都具有相同的id,您如何定位它们 <li class="a">something</li><li class="a">something b</li> } 这是林克 <a onclick="loadurl('page.php?p=1&id=2')"> 不要重复ID,而是使用类名。ID应该是唯一的

我是Ajax新手,但我知道您可以使用getelementbyid来更新页面上具有该id的任何元素。我想知道的是,如果页面上的某个元素都具有相同的id,您如何定位它们

<li class="a">something</li><li class="a">something b</li>
}

这是林克

<a onclick="loadurl('page.php?p=1&id=2')">

不要重复ID,而是使用类名。ID应该是唯一的

<li class="a">something</li><li class="a">something b</li>

在HTML页面中多次使用同一id是无效的HTML。如果您使用了类名:

<li class="a">something</li><li class="a">something b</li>
或者,要将您的响应放入具有该类名的所有元素中,请使用以下内容:

document.getElementsByClassName("a")[1].innerHTML = XMLHttpRequestObject.responseText;
var els = document.getElementsByClassName("a");
for (var i = 0; i < els.length; ++i)
    els[i].innerHTML = XMLHttpRequestObject.responseText;
var els=document.getElementsByClassName(“a”);
对于(变量i=0;i
您不应重复使用id。这就是你现在挣扎的原因。要对元素进行分组,请使用类名。Id唯一标识单个DOM元素。作为指针:
getElementById()
具有单数名称的原因,例如,与
getElementsByClassName()
的复数名称相反,是因为它只应用于一个元素,并且应该查找/操作一个元素。或者您可以使用
document.getElementsByClassName('a')for
(或其他)循环来执行相同的操作。jQuery并不是所有东西都需要的(就像它真的一样好,真的是…。@David当然不是,但它是存在的,所以我建议使用它,因为它提高了可读性,而且使用起来非常简单。是的,但我认为vanilla JS方法会更适用(使用库方法,jQuery,MooTools…)作为附录,来展示图书馆的不同之处和(也许)好处。我听到你们和thanx的提示!但是有人能调整我上面的脚本以适应修复吗?谢谢。我现在把标签改成了课堂!那么,我如何实现您的技术来处理上述代码呢?thanx G,但这是否意味着我必须手动输入数字(1)???如果李是名单上的第20个或第8个呢???你如何检测到这一点,并确保脚本能够捕捉到这一点?这就引出了一个问题,你为什么要这样做?如果您试图以特定元素为目标,请为其指定唯一的id并使用document.getElementById()。如果您试图以几个元素为目标,请为它们指定一个公共类名,并使用代码以所有元素为目标。你到底想做什么?好吧,让我解释清楚。我有一大堆项目,例如:一些标题,另一个标题,如果我点击“另一个标题”,它应该会变为“你点击了另一个标题”,而不刷新页面!只需给每个标题一个不同的id。
  • 一些标题,另一个标题“>又一个标题
  • 。将id传递给函数:。然后修改函数以接受它:函数loadurl(dest,targetId)。然后使用参数以元素为目标:document.getElementById(targetId).innerHTML=XMLHttpRequestObject.responseText;
    document.getElementsByClassName("a")[1].innerHTML = XMLHttpRequestObject.responseText;
    
    var els = document.getElementsByClassName("a");
    for (var i = 0; i < els.length; ++i)
        els[i].innerHTML = XMLHttpRequestObject.responseText;