【问题标题】:setAttribute not working设置属性不起作用
【发布时间】:2013-09-23 23:08:35
【问题描述】:

我正在制作一个用于表单验证的插件作为练习,但由于某种原因,在我创建了一个 h2 元素并尝试设置它的属性后,它不起作用。这是代码

    var testing = function(regex, value, error_msg, error_msg_field_id){
        var pattern = new RegExp(regex);
        if (!pattern.test(value)){
            var ele = document.createElement("H2");
            var node = document.createTextNode(error_msg);
            ele.setAttribute('style', 'color:white');
            alert("hi");
            jQuery(error_msg_field_id).append(node);
        }
    }

文本显示没有问题,但不是白色。这对我来说毫无意义

【问题讨论】:

  • ele.style.color = white;?
  • 顺便说一句,只是一个建议:使用console.log 而不是alert(除非您在 IE 中检查您的代码)。
  • @user308553 你在哪里附上了ele?您创建了元素,但没有将其附加到文档中。
  • 你为什么不用innerHTML 而不是createTextNodejQuery.append?它更快。
  • @SuperScript,一般来说,innerHtml 比创建和附加元素要慢(例如here)。当您只想更改文本时,textContent 是一个很好的选择,因为您还可以删除任何不需要的 HTML 插入。

标签: javascript jquery setattribute


【解决方案1】:

您正确地使用了setAttribute,但是您在 h2 元素上设置了该属性,而 从未真正插入在您的 DOM 中。

您可以将代码的相关部分更改和简化为:

var ele = document.createElement("H2");
ele.textContent = error_msg;
ele.setAttribute('style', 'color:white');
jQuery(error_msg_field_id).append(ele);

这里jQuery的使用也不是必须的。你可以简单地使用

document.querySelector("#" + error_msg_field_id).appendChild(ele);

这同样简单。

【讨论】:

  • 嗨,使用它代替 jQuery 有优势吗?
  • 1.你不需要 jQuery ;) 这意味着你可以绕过包含近 100k 的库。 2. 使用原生 javascript 几乎肯定比使用 jQuery 快。 3. 你会感觉很好,因为你使用原生 javascript 来完成其他人求助于库的东西。
  • 你唯一遇到的麻烦是在使用IE7或更低版​​本的时候,因为这些不知道querySelector
  • 谢谢!!这就是为什么我如此喜欢这个网站。这么多优秀的老师
猜你喜欢
  • 2012-10-16
  • 1970-01-01
  • 1970-01-01
  • 2021-09-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-06
  • 2013-10-20
相关资源
最近更新 更多