我正在尝试重构这一小块代码来定义常用变量并在方法中使用它们。为什么 this.title 有效,但 this.dialogoverlay 却没有?注释行有效,但我想按照说明重构,所以我不必反复使用document.getElementById
。
function CustomAlert(){
this.title = "This is My Title";
this.dialogoverlay = document.getElementById('dialogoverlay');
this.render = function(dialog){
// document.getElementById('dialogoverlay').style.display = "block";
this.dialogoverlay.style.display = "block";
document.getElementById('dialog-shadow').style.display = "block";
document.getElementById('dialogbox').style.display = "block";
document.getElementById('dialogboxhead').innerHTML = this.title;
document.getElementById('dialogboxbody').innerHTML = dialog;
etc...
我得到"无法设置null样式。"
答案 0 :(得分:2)
要回答你的问题,"为什么this.title有效,但这个.dialogoverlay却没有?"。
什么"这"是指取决于您如何调用该函数。我想引用http://www.javascripttutorial.net/javascript-this/,
中的内容"您可能遇到的一个常见错误是认为内部函数与外部函数中的相同。事实是内部函数的上下文取决于它是如何被调用而不是外部函数的上下文。"
答案 1 :(得分:1)
因为函数中的this
引用了其他变量。请尝试使用dialog
代替this