Javascript OOP 使用 getElementsByClassName 方法获取子元素

标签 javascript oop

我在使用 getElementsByClassName 方法获取子项时遇到问题。

我正在使用 OOP 方式,就像 Jquery 一样。

"use strict";

var $, i;

(function() {

  $ = function(el) {
    return new obj$(el);
  };

  var obj$ = function(el) {

    var firstChar = el.charAt(0),
        cl        = document.getElementsByClassName(el.slice(1));

    switch (firstChar) {
      case ".":
        for (i = 0; i < this.length; i++) {
          this[i] = cl[i];
        }
        break;

    }

  };

  obj$.prototype = {

    find : function(child) {

      for (i = 0; i < this.length; i++) {
        this[i].getElementsByClassName(child)[0];
      }

      return this;

    },
    html : function(data) {

      for (i = 0; i < this.length; i++) {
        this[i].innerHTML = data;
      }

      return this;

    }

  };

})();

var x = $(".parent").find("child").html("replace!");
console.log(x);
<div class="parent">
  this is parent 1
  <p class="child">test 1</p>
</div>
<div class="parent">
  this is parent 2
  <p class="child">test 2</p>
</div>
<div class="parent">
  this is parent 3
  <p class="child">test 3</p>
</div>

jsFiddle:https://jsfiddle.net/Lng5mn3o/

这不起作用。

最佳答案

我已经为你更新了 fiddle - https://jsfiddle.net/Lng5mn3o/3/

我在jsfiddle示例中更改的主要内容是,我创建了this['elements']来存储匹配的元素并在循环休息中使用它的长度是可以的你的代码

 // define blank array
 this['elements'] = new Array();

 // store elements
 this['elements'][i] = cl[i];

 // loop over that elements     
 for (i = 0; i < this['elements'].length; i++) {         

关于Javascript OOP 使用 getElementsByClassName 方法获取子元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34849665/

相关文章:

java - 为什么我们在 Java 中实例化 Calendar Class(abstract)

JavaScript 面向对象问题

Javascript 无法在 PHP 页面上运行

javascript - Magento Custom 模块用于 T 恤设计定制

php - php 类中的 Medoo 对象

C# 类组织和列表

PHP抽象类站点配置

javascript - Meteor - 如何隐藏使用的 meteor 版本

javascript - 使用 javascript 或 jquery 水平滚动 div onclick

javascript - 没有得到 XMLHTTPRequest 的响应