質問

私はこれであるに大きな上、機能のトンとJSスクリプトを持っています

function id(i) {
    if(document.getElementById)
        return document.getElementById(i);
    return;
}

それはちょうど私のdocument.getElementByIdを入力するには多くのバイト()の各時間を節約できます。 私の問題は、私は頻繁に追加し、要素からクラスや他の属性を削除しています。 私はこれを行うことができるようにしたい。

id('main').addClass("someClass");

誰もがこれを説明することができる任意の良いJavascriptのプロトタイピングのチュートリアルを知っていますか? おかげます。

役に立ちましたか?

解決

あなたが探している技術は、メソッドチェーンです。基本的に、「ID」機能は、その上に「addClass」メソッドを有するオブジェクトのインスタンスを返す必要があります。その方法は、「これを返す」でしょう。

ここでは、この概念を説明するチュートリアルです:
http://javascriptant.com/articles/32/chaining-your-javascript-方法

私はまた、非常に
(はい連鎖が覆われている):-)このような複数の技術を学ぶためにこの本をお勧めします http://jsdesignpatterns.com/する

他のヒント

私が聞いている:あなただけのjQueryのようなものを使用して検討していますか?あなたは問題がなかった場合は、単純になります:

$("#main").addClass("someClass");

とすれば完了です。目標は、この自分を実装する場合には(もしそうなら、なぜですか?)そして、あなただけの要素は3つのクラスを持っている場合、実際の属性だけであることを知っておく必要があります:

"one two three"

コースの他の態様は、拡張メソッドを書いている。

あなたはIE6や7の要素で使用可能なメソッドを拡張するために、そのことはできません特に、すべてのブラウザのためにそれを達成することはできません。

あなたは自分の開発にはJQueryを含める場合は、自分で時間の袋を救う正直言ってます。

ベスト枠組みで行くことに、あなたができればcletusが言うように。

しかし、AnthonyWJonesは非常に適切ではない - 一般的なElementオブジェクトで利用できるメソッドを拡張することはできませんが、 にはまだ個々の要素に追加することができます。

あなたのID機能は、addClassメソッドで返された要素を拡張することができます:

function get(id){
    el = document.getElementById(id);
    el.addClass = function(cls){
        // your addClass code here
        // (remember IE uses className, others use class)
    };
    return el;
}

あなたも、この機能をサポートするブラウザ用(自動的にページ上のすべての要素に追加します)Elementオブジェクトに追加して、IEのみのためにあなたのID機能にメソッドを追加することができます - これはメモリとスピードに保存されますあなたは要素法の多くの追加を開始、特にアプリケーションビット、最大ます。

この動作はMooToolsのは、この問題を解決し、正確にどのようにある! - それは可能なフレームワークを使用することをお勧めしますことを繰り返しクマ

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top