没有jquery的javascript find()函数

Chi*_*ing 5 javascript

我喜欢尝试新的东西。所以,我决定在使用 jquery 的情况下制作自己的函数。我正在尝试构建 find()

所以,这是我的代码:

function $(el) {
  var firstChar = el.charAt(0),
      id = document.getElementById(el.slice(1));

  switch (firstChar) {
    case "#":
      return id;
      break;
  }
}

function find(el, loop) {
  return getElementsByTagName(el)[loop];
}

$("#test").find("h1", 0).innerHTML = "some text";
Run Code Online (Sandbox Code Playgroud)
<div id="test">
  <h1>test one</h1>
  <h2>test two</h2>
</div>
Run Code Online (Sandbox Code Playgroud)

它不起作用,在我的 Dreamweaver 错误日志中,它说getElementsByTagName未定义。

我的代码有什么问题?

t.n*_*ese 8

getElementsByTagName必须在 DOMElement 上调用。例如document.getElementsByTagNameyourElement.getElementsByTagName

等价于find将是querySelectorAllquerySelector

 document.getElementById("#test").getElementsByTagName("h1")[0].innerHTML = "some text";
Run Code Online (Sandbox Code Playgroud)

或者

 document.getElementById("#test").querySelector("h1").innerHTML = "some text";
Run Code Online (Sandbox Code Playgroud)

或者

 document.getElementById("#test").querySelectorAll("h1")[0].innerHTML = "some text";
Run Code Online (Sandbox Code Playgroud)

一个简单的实现,类似于它在 jQuery 中的实现方式,但只是概念代码的证明,在生产代码中没有使用任何东西:

 document.getElementById("#test").getElementsByTagName("h1")[0].innerHTML = "some text";
Run Code Online (Sandbox Code Playgroud)
 document.getElementById("#test").querySelector("h1").innerHTML = "some text";
Run Code Online (Sandbox Code Playgroud)