如何在动态创建的元素上使用javascript函数?

时间:2018-05-18 10:06:26

标签: javascript dom

我使用

创建了server.use(express.static(path.resolve(__dirname, '../public'))); server.use(multer({storage}).array('image', 12)); server.use(bodyParser.urlencoded({ extended: false })); server.use(bodyParser.json()); server.use('/', router);
li

这是我传入的字符串的模板:

  static make(string, el) {
    var wrapper= document.createElement((el || 'div'));
    wrapper.innerHTML = string;
    return wrapper.firstChild;
  }

  static makeLi(string) {
    return this.make(string, "ul");
  }

使用此

传递给函数的位置
return `
  <li class="truer-companion">
    <a class="truer-companion-link" href="${url}">${this.escapeHTML(title)}</a>
    ${Vote.form_container(article_id)}
  </li>
`;

引发错误

static createVoteForms(el) { console.log(el); let foo = (el || document).getElementsByClassName("bar");

但在其他地方,我没有使用参数运行Error in event handler for (unknown): TypeError: (el || document).getElementsByClassName is not a function它可以正常工作。

当我记录createVoteForms时,输出为el,但其属性类似于对象。

1 个答案:

答案 0 :(得分:2)

  

当我记录el时,输出是#text但是具有类似对象的属性。

DOM有许多不同类型的节点。

当您致电createElement时,您会创建一个元素节点

您传递给createVoteForms的值是文本节点。这是文本在DOM中的表示方式。 (如果你有一个<p>但没有办法把文字放在里面,那就不会有多大帮助!)。

文本节点没有getElementsByClassName方法(因为文本节点不能包含其他节点)。