希望通过点击t1改变div中的内容,为什么这么实现HTML函数无效?
<div>
<div class="t1">
测试
</div>
</div>
<script type="text/javascript" src="../../../../scripts/helper.js"></script>
<script>
document.getElementsByClassName("t1")[0].onclick = function() {
Helper.$(".t1")[0].html("90")
}
</script>
Helper代码
var Helper = {
$: function(strExpr) {
var idExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/;
var classExpr = /^(?:\s*(<[\w\W]+>)[^>]*|.([\w-]*))$/;
if(idExpr.test(strExpr)){
var idMatch = idExpr.exec(strExpr);
return document.getElementById(idMatch[2]);
}else if(classExpr.test(strExpr)){
var classMatch = classExpr.exec(strExpr);
var allElement = document.getElementsByTagName("*");
var ClassMatch = [];
for(var i=0,l=allElement.length; i<l; i++){
if(allElement[i].className.match( new RegExp( "(\\s|^)" + classMatch[2] + "(\\s|$)") )){
ClassMatch.push(allElement[i]);
}
}
return ClassMatch;
}
},
html: function() {
if (arguments.length === 0) {
return this.innerHTML;
} else if (arguments.length === 1) {
this.innerHTML = arguments[0];
return this;
}
}
}
这是我写的,但无法实现,请问什么原因
无法实现是因为你
.html("90")
.html是挂在Helper
上的。Helper.$(".t1")[0]
返回的元素上没有对应的方法,要按你写法的实现,就需要将对应方法设置在返回的元素上。