JSFiddle - React, Tailwind, and code Playground

by mejileben

HTML

<div class='hogehoge'>
    before
</div>
<div id='hogehoge'>
    before
</div>
<div class='hogehoge'>
    before
</div>

JavaScript

// 変数$に関数を代入する
var $ = function(elementName){
    // [参考]
    // var系の変数宣言はメソッドの最初にまとめてしておく
    // http://qiita.com/Chrowa3/items/a11adcd811e253a0b333
    var myJQuery,
        elements = [],
        targetElementList,
        targetClass,
        targetId;

    // [準備]
    // elementNameが指す要素をelementsという配列に入れていく作業
    // elementNameがドットから始まるか、
    // シャープから始まるかによって処理を分岐している
    // textメソッドで使うので、配列elementsに要素を代入しておく
    if(elementName.startsWith('.')){
        // 文字列からドットを取り除く
        targetClass = elementName.replace('.', '');

        // https://developer.mozilla.org/ja/docs/Web/API/Document/getElementsByClassName
        // class名のリストが返ってくる
        // classなので複数要素があるかもしれないため、配列がtargetElementListに入る
        targetElementList = document.getElementsByClassName(targetClass);

        for(var i = 0; i < targetElementList.length; i++){
            // https://developer.mozilla.org/ja/docs/Web/API/HTMLCollection
            // この辺の詳細は参考までに。
            // 配列の末尾にHTML要素を追加していく
            elements.push(targetElementList.item(i));
        }
    }else if(elementName.startsWith('#')){
        targetId = elementName.replace('#', '');

        // IDは1つだけなので特に繰り返し文はいらない
        elements.push(document.getElementById(targetId));
    }

    // [本題]
    // textメソッドをmyJQueryオブジェクトに追加する
    myJQuery = {
        text: function(text){
            // もしelementsが空だったらエラーになるのでreturnしておく
            if(!elements.length){
                return false;
            }

            // 配列elementsの一つ一つに対して、innerTextを書き換える
            // https://developer.mozilla.org/ja/docs/Web/API/Node/innerText
            // forEach文は、配列の要素一つ一つに対して、引数で渡した関数を実行する
            // 引数で渡す関数をinnerTextを書き換える関数にしておけば、全elementのinnerTextを書き換える
            elements.forEach(function(element){
                element.innerText = text;
            });
            return true;
        }
    };

    // 最後にtextメソッドをプロパティとして持っているmyJQueryオブジェクトを返す
    return...