如何对innerHTML执行操作

时间:2018-10-01 06:30:17

标签: javascript jquery html

这应该是最简单的解决方案,尽管我找不到任何相关内容。如果我在变量中包含元素,则使用jQuery:

var myContainer = $(body).find('.any-class');

现在,此变量是一个对象,其中包含其各自元素中的所有数据。它有自己的方法(例如myContainer.attr('anyAttr')将不起作用,但myContainer.getAttribute('anyAttr')现在将起作用)。

我的查询是当我得到myContainer.innerHTML时,然后无法执行类似-.find()之类的操作。我需要这样做,因为我需要在该元素的innerHTML中找到类和ID(我实际上是在运行时创建的)。

此流程很重要,因为我在每个课程中都进行了循环。这是我的代码:

var myContainer = $(body).find('.any-class');
$.each(myContainer, function(key, value) {
    if (value.getAttribute('is_required')) {
        //value.innerHTML.find('.anyOtherClass'); find doesn't work. What should be done?
    }
}

3 个答案:

答案 0 :(得分:2)

由于innerHTML的类型为字符串,因此无法在其上实现find()。您可以简单地将value用作jQuery对象,例如$(value).find()

请注意:您必须用引号将body括起来。

var myContainer = $('body').find('.any-class');
$.each(myContainer, function(key, value) {
  if (value.getAttribute('is_required')) {
    console.log(typeof(value.innerHTML)); //string
    console.log($(value).find('.anyOtherClass')[0]);
  }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="any-class" is_required="yes">
  <span>Container 1</span>
  <span class="anyOtherClass">Container 2</span>
</div>

答案 1 :(得分:0)

如果.innerHTML是DOM HTML元素,只需省略value并用jQuery包装元素:

$(value).find('#anyId')....

请注意返回类型以及调用的函数和获得的属性的确切含义。在$(body)上调用find将返回一个jQuery列表,其中包含HTML元素,所有这些元素都与选择器表达式匹配。对于此类列表,jQuery确实提供了其他方法,例如http://api.jquery.com/attr/

在您的示例中,您突然切换到另一个变量optionContainers,好吧,忽略了上一行,现在您正在each上遍历一个类似数组的对象并处理其索引条目。 如果optionContainers是jQuery列表,则确实会检索DOM HTML元素。 要使用jQuery方法,您必须使用jQuery包装这些元素。

永远记住,jQuery仅提供了额外的一层功能,因此您必须确保始终与该层交谈-就像您是通过律师(提供若干高级服务)与某人交谈一样。

答案 2 :(得分:0)

如果必须对所有属性为“ required”的元素执行该操作,则可以尝试

document.querySelectorAll('[attributeName="attributeValue"]');

如果选择所有必需项,则可以在下面使用

document.querySelectorAll("[required]");

您可以将代码更改为以下内容:

var selectedElements = value.querySelectorAll("required");

现在,您可以使用forEach或for循环遍历selectedElements

关于querySelectorAll的文档:https://developer.mozilla.org/en-US/docs/Web/API/Element/querySelectorAll