库中的Javascript选择元素
我正在开发一个javascript库,它的工作方式如下:库中的Javascript选择元素,javascript,Javascript,我正在开发一个javascript库,它的工作方式如下:tex(“元素”).print(“hi”)。代码如下: (function (window) { var regex = { Id : /^[#]\w+$/, Class : /^[.]\w+$/, Tag : /^\w+$/, validSelector : /^([#]\w+|[.]\w+|\w+)$/
tex(“元素”).print(“hi”)
。代码如下:
(function (window) {
var regex = {
Id : /^[#]\w+$/,
Class : /^[.]\w+$/,
Tag : /^\w+$/,
validSelector : /^([#]\w+|[.]\w+|\w+)$/
},
tex = function(selector){
//only some of the functions need to select an element
//EX:
// style: tex(selector).style(style);
//one that would not need a selector is the random number function:
// tex().random(from,to);
if (selector){
if (typeof selector === 'string'){
var valid = regex.validSelector.test(selector);
if( valid ){
if(regex.Id.test(selector)){
this = document.getElementById(selector);
}
if(regex.Class.test(selector)){
this = document.getElementByClass(selector);
}
if(regex.Tag.test(selector)){
this = document.getElementByTagName(selector);
}
}
}else if(typeof selector === 'object'){
this = selector;
}
//this = document.querySelector(selector);
// I could make a selector engine byt I only need basic css selectors.
}
};
tex.prototype = {
dit : function(){
this.innerHTML = 'Hi?!?!?!'
}
};
window.tex = tex;
})(window);
当我试图运行代码时,我得到一个错误,它说,“参数的左侧不是引用”,指的是this=document.getElementById(选择器)代码>
有人知道我的代码有什么问题吗?因为你不能设置这个
要做你想要做的事情,你只需归还这个
不使用原型
var foo = function( selector ) {
this.print = function () {
console.group("in print");
console.log(this.elements[0].innerHTML);
console.groupEnd("in print");
return this;
}
this.printAll = function () {
console.group("in printAll");
for (var i=0; i<this.elements.length; i++) {
console.log(this.elements[i].innerHTML);
}
console.groupEnd("in printAll");
return this;
}
this.elements = document.querySelectorAll( selector );
return this;
}
console.group("id");
foo("#foofoo").print();
console.groupEnd("id");
console.group("class");
foo(".bar").printAll().print();
console.groupEnd("class");
(function () {
var basic = function (selector) {
this.elements = document.querySelectorAll(selector);
return this;
}
basic.prototype.print = function () {
console.group("in print");
console.log(this.elements[0].innerHTML);
console.groupEnd("in print");
return this;
}
basic.prototype.printAll = function () {
console.group("in printAll");
for (var i = 0; i < this.elements.length; i++) {
console.log(this.elements[i].innerHTML);
}
console.groupEnd("in printAll");
return this;
}
var foo = function (selector) {
return new basic(selector);
}
window.foo = foo;
})();
console.group("id");
foo("#foofoo").print();
console.groupEnd("id");
console.group("class");
foo(".bar").printAll().print();
console.groupEnd("class");
var foo=函数(选择器){
this.print=函数(){
控制台组(“打印中”);
console.log(this.elements[0].innerHTML);
console.groupEnd(“打印版”);
归还这个;
}
this.printAll=函数(){
控制台组(“打印中”);
对于(var i=0;i,因为您无法设置此
要做你想要做的事情,你只需归还这个
不使用原型
var foo = function( selector ) {
this.print = function () {
console.group("in print");
console.log(this.elements[0].innerHTML);
console.groupEnd("in print");
return this;
}
this.printAll = function () {
console.group("in printAll");
for (var i=0; i<this.elements.length; i++) {
console.log(this.elements[i].innerHTML);
}
console.groupEnd("in printAll");
return this;
}
this.elements = document.querySelectorAll( selector );
return this;
}
console.group("id");
foo("#foofoo").print();
console.groupEnd("id");
console.group("class");
foo(".bar").printAll().print();
console.groupEnd("class");
(function () {
var basic = function (selector) {
this.elements = document.querySelectorAll(selector);
return this;
}
basic.prototype.print = function () {
console.group("in print");
console.log(this.elements[0].innerHTML);
console.groupEnd("in print");
return this;
}
basic.prototype.printAll = function () {
console.group("in printAll");
for (var i = 0; i < this.elements.length; i++) {
console.log(this.elements[i].innerHTML);
}
console.groupEnd("in printAll");
return this;
}
var foo = function (selector) {
return new basic(selector);
}
window.foo = foo;
})();
console.group("id");
foo("#foofoo").print();
console.groupEnd("id");
console.group("class");
foo(".bar").printAll().print();
console.groupEnd("class");
var foo=函数(选择器){
this.print=函数(){
控制台组(“打印中”);
console.log(this.elements[0].innerHTML);
console.groupEnd(“打印版”);
归还这个;
}
this.printAll=函数(){
控制台组(“打印中”);
对于(var i=0;iJQuery完成了这项工作。我有什么办法吗?@TekiTech他们为这个添加了属性,比如this.something=something
,但这是一个语言构造。我让它开始工作:this.length=1;
开始时是this[0]=document.getElementById(选择器);
@TekiTech:this[0]
还设置了一个属性。Jquery没有在函数调用中设置这个属性,看看他们的代码:Jquery做到了。有什么办法吗?@TekiTech他们给它添加了一些属性,比如this.something=something
,但这是一个语言构造。我让它工作起来了:this.length=1;
开始,然后这个[0]=document.getElementById(选择器);
@TekiTech:此[0]
还设置了一个属性。Jquery在其函数调用中未设置此属性,请查看其代码: