【问题标题】:how to iterate through a particular attribute using js?如何使用 js 遍历特定属性?
【发布时间】:2015-06-17 08:37:09
【问题描述】:

我在我构建的网页上使用 ckeditor inline。我可以将数据保存到数据库中,但主要问题是 ckeditor 将其自己的类和其他属性应用于 contenteditable 设置为 true 的所有元素。它还删除了元素上的一些类。这会影响我网页的样式。我希望在将 ckeditor 设置在浏览器上之前删除类和其他属性。为此,我需要遍历所有内容可编辑设置为 true 的元素。我们如何使用 js 来做到这一点?

【问题讨论】:

  • 类似$("[contenteditable]")
  • 你应该先阅读如何正确retrieve data from CKEditor
  • 我确实阅读了如何从 ck 编辑器中检索数据以及我如何准确地检索数据,但问题是这是由 ckeditor 更改的数据(以及新类)。我希望拥有没有这些新类的数据@oleq
  • 你能详细说明一下吗。像解释代码@dandavis

标签: javascript html css loops ckeditor


【解决方案1】:

普通 JS:
var el = document.getElementsByTagName("*");
for(var i = 0, l = el.length; i
{
if (el[i].contentEditable)
{
// 在这里做你想做的事
}
}

jQuery:

正如dandavis所说:

$("*[contentEditable]").each(function()
{
    // 
});

编辑:

只要 .contentEditable 不返回布尔值, 您必须检查元素是否具有 contentEditable 属性,如下所示:

var el = document.getElementsByTagName("*");

for(var i = 0, l = el.length; i < l; i++)
{
    if (el[i].contentEditable === "true" || el[i].contentEditable === "")
    {
        // Do here what you want
    }
}

为了移除 contentEditable 属性:
在 jQuery 中,您可以这样做:

$("*[contentEditable]").each(function()
{
    this.prop("contentEditable", false);
});

纯js:

el[i].contentEditable = "false";

【讨论】:

  • 这里建议的普通 JS 方法只是对文档中的所有元素执行此操作,而不仅仅是具有 contenteditable 属性的元素。我尝试在 if 语句内部和外部添加一个计数器if 语句(都在 for 循环中)。这两个计数器产生相同的值。我还手动计算了文档中的 contenteditable 属性,数字变化很大
  • 如果标签具有 contenteditable 属性,我仍然不明白如何从标签中删除属性。我对此有点陌生。请帮忙
  • @krishna jQuery 在“幕后”做同样的事情,如果不检查文档中的所有元素,您将不知道哪个元素具有 contentEditable 属性。附言见编辑
  • 我试过这个并收到错误说 this.prop is not a function
猜你喜欢
  • 2016-05-12
  • 1970-01-01
  • 2011-12-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多