【发布时间】:2015-06-17 19:12:18
【问题描述】:
希望有人可以帮助我处理我拥有的这段代码。
JavaScript:
function myFrame(id){
if (id) {
if (window === this) {
return new myFrame(id);
}
this.e = document.getElementById(id);
return this;
} else {
return "";
}
}
myFrame.prototype = {
math: function () {
alert(1 + 1);
},
hide: function () {
this.e.style.display = 'none';
return this;
}
}
HTML:
<p id="hideParagraph">Hide Paragraph</p>
<input type="button" name="math" onclick="hide()" value="Hide Paragraph" />
<input type="button" name="math" onclick="math()" value="Alert Math" />
<script type="text/javascript">
function math() {
myFrame("body").math();
}
function hide() {
myFrame("hideParagraph").hide();
}
</script>
上面的代码工作正常,但我想知道有没有办法不指定元素。
例如,我需要指定 "body" 或其他字符串值才能使此代码正常工作,否则我会收到 "is not a function" 错误留言
myFrame("body").math();
有没有办法让我有这样的代码:
myFrame().math();
并且仍然使用 "hide" 方法,例如:
myFrame("hideParagraph").hide();
非常感谢任何帮助!
【问题讨论】:
-
您专门编写了代码以使其不起作用。去掉那段代码,它就可以工作了。
-
如果
math函数不需要元素的上下文,为什么它甚至在原型上?要么将其设为myFrame.math = function,要么将其完全分开。 -
return "";。当您调用myFrame()时,您将返回一个空白字符串(不是一个新的myFrame对象)。字符串没有.math()方法。
标签: javascript function object prototype