私はJavaScriptライブラリに取り組んでいます。コードは次のとおりです。
(function(){
var elem,
int,
method,
versrionInfo = {
release : "0.2.1",
date : "10/22/2013",
releaseNotes : "Jist has been modified to handle lists of elements."
},
Jist = function(s){
return new Jist.fn.init(s);
};
Jist.fn = Jist.prototype ={
init : function(s){
if(!s){
return this;
}
else{
this.length = 1;
if (typeof s === "object"){
this[0] = s;
}
else if(typeof s === "string"){
var obj;
obj = document.querySelectorAll(s);
this[0] = obj;
elem = this[0];
}
return this;
}
},
}
Jist.fn.init.prototype = Jist.fn;
Jist.fn.init.prototype = {
print : function(txt){
for(var i=0; i<elem.length; i++) {
elem[i].innerHTML = txt;
}
},
click : function(callback){
for(var i=0; i<elem.length; i++) {
elem[i].addEventListener("click",callback,false);
}
},
hide : function(){
for(var i=0; i<elem.length; i++) {
elem[i].style.display = 'none';
}
},
show : function(){
for(var i=0; i<elem.length; i++) {
elem[i].style.display = '';
}
},
fadeOut : function(ms) {
var opacity = 1,
interval = 50,
gap = interval / ms;
function func() {
opacity -= gap;
for(var i=0; i<elem.length; i++){
elem[i].style.opacity = opacity;
}
if(opacity <= 0) {
window.clearInterval(fading);
for(var i=0; i<elem.length; i++){
elem[i].style.display = 'none';
}
}
}
var fading = window.setInterval(func, interval);
}
};
window.Jist = window.jist = window.Jis = window.jis = window.Jit = window.jit = window._ = Jist;
})()
そして、ライブラリをテストするために body セクションにあるものは次のとおりです。
<div id="fader"></div>
<input type="button" id="inpt" value="click"></input>
<div class="test">Test</div>
<div class="test">Test</div>
<script>
jist("#inpt").click(function(){
//escape(txt)
//btoa()
//atob()
jist("#fader").fadeOut(1000);
jist(".test").print("hello world");
window.setTimeout(function(){jist(".test").print("nata");},2000);
});
</script>
ボタンをクリックすると、div フェーダーではなく、クラス「test」の div がフェードアウトします。これは、ライブラリがフェーダー div をフェードアウトする信号を受信した後、「テスト」div を編集する信号を受信し、変数elem
をテスト div に変更するためです。
これを防ぐ方法を知っている人はいますか?たぶん新しいものを返しJist()
ますか?
どうもありがとう!