我想替换html元素中的内容,所以我使用以下函数:

function ReplaceContentInContainer(id,content) {
   var container = document.getElementById(id);
   container.innerHTML = content;
}

ReplaceContentInContainer('box','This is the replacement text');

<div id='box'></div>

上面的工作很好,但问题是我有一个页面上的html元素,我想替换的内容。所以我不能用id,只能用类。有人告诉我,javascript不支持任何类型的内置get元素的类函数。那么,如何修改上面的代码以使其使用类而不是id呢?

附注:我不想使用jQuery。


当前回答

我假设这不是一个有效的选项时,这是最初的要求,但您现在可以使用document.getElementsByClassName(");。例如:

var elements = document.getElementsByClassName(names); // or:
var elements = rootElement.getElementsByClassName(names);

有关更多信息,请参阅MDN文档。

其他回答

当一些元素缺少ID时,我像这样使用jQuery:

$(document).ready(function()
{
    $('.myclass').attr('id', 'myid');
});

这可能是一个奇怪的解决方案,但也许有人会觉得它有用。

我认为是这样的:

function ReplaceContentInContainer(klass,content) {
var elems = document.getElementsByTagName('*');
for (i in elems){
    if(elems[i].getAttribute('class') == klass || elems[i].getAttribute('className') == klass){
        elems[i].innerHTML = content;
    }
}
}

会工作

这应该工作在几乎任何浏览器…

function getByClass (className, parent) {
  parent || (parent=document);
  var descendants=parent.getElementsByTagName('*'), i=-1, e, result=[];
  while (e=descendants[++i]) {
    ((' '+(e['class']||e.className)+' ').indexOf(' '+className+' ') > -1) && result.push(e);
  }
  return result;
}

你应该可以这样使用它:

function replaceInClass (className, content) {
  var nodes = getByClass(className), i=-1, node;
  while (node=nodes[++i]) node.innerHTML = content;
}

在javascript中,有3种不同的方法按类获取元素。但是这里对于你的查询,因为你有多个具有相同类名的元素,你可以使用2个方法:

getElementsByClassName Method - It returns all the elements with the specified class present in the document or within the parent element which called it. function ReplaceContentInContainer(className, content) { var containers = document.getElementsByClassName(className); for (let i = 0; i < containers.length; i++) { containers[i].innerHTML = content; } } ReplaceContentInContainer('box', 'This is the replacement text'); <div class='box'></div> querySelectorAll Method - It select element on the basic of CSS selectors. Pass your CSS class to it with a dot and it will return all the element having specified class as an array-like object. function ReplaceContentInContainer(className, content) { var containers = document.querySelectorAll(`.${className}`); for (let i = 0; i < containers.length; i++) { containers[i].innerHTML = content; } } ReplaceContentInContainer('box', 'This is the replacement text'); <div class='box'></div>

我假设这不是一个有效的选项时,这是最初的要求,但您现在可以使用document.getElementsByClassName(");。例如:

var elements = document.getElementsByClassName(names); // or:
var elements = rootElement.getElementsByClassName(names);

有关更多信息,请参阅MDN文档。