美文网首页
原生JS 实现addClass、setText、getText

原生JS 实现addClass、setText、getText

作者: _思铭 | 来源:发表于2019-05-20 14:45 被阅读0次

HTML部分

  <!DOCTYPE html>
<html>
<head>
<script src="//code.jquery.com/jquery-1.9.1.min.js"></script>

  <meta charset="utf-8">
  <title>JS Bin</title>
</head>
<body>
  <ul>
    <li id="item1">选项1</li>
    <li id="item2">选项2</li>
    <li id="item3">选项3</li>
    <li id="item4">选项4</li>
    <li id="item5">选项5</li>
  </ul>
</body>
</html>

CSS部分

.blue{color: blue;}

JS 部分

  window.jQuery = function(nodeOrSelector) {
  let nodes = {};//初始化nodes
  if (typeof nodeOrSelector === 'string') {    //判断传过来的是不是字符串
    let temp = document.querySelectorAll(nodeOrSelector)//伪数组
    for (let i = 0; i < temp.length; i++) { //遍历temp
      nodes[i] = temp[i]//将temp的key赋给nodes
    }
    nodes.length = temp.length //将temp的length赋给nodes
  } else if (nodeOrSelector instanceof Node) {//传过来是Node的节点
    nodes = { //为nodes生成一个伪数组
      0: nodeOrSelector,
      length: 1
    }
  }
  nodes.setText = function(text){
    for(let i=0;i<nodes.length;i++){
      nodes[i].textContent = text;//将nodes的文本内容变成接收到的参数内容
    }
  }
  nodes.addClass = function(classes) {//对数组的每个元素执行一次提供的函数
    classes.forEach((value) => {
      for (let i = 0; i<nodes.length; i++) {
        nodes[i].classList.add(value)//给nodes添加接收到的class属性
      }
    })
  }
  return nodes
}
var node2 = jQuery('ul > li')
node2.addClass(['blue']);
node2.setText('hi');

相关文章

网友评论

      本文标题:原生JS 实现addClass、setText、getText

      本文链接:https://www.haomeiwen.com/subject/blskzqtx.html