Javascript:Can';t设置Null的样式
我正试图重构这一小块代码,以定义通常需要的变量,并在方法中使用它们。为什么此.title有效,而此.dialogoverlay无效?注释行可以正常工作,但我希望按照说明进行重构,这样就不必反复使用Javascript:Can';t设置Null的样式,javascript,Javascript,我正试图重构这一小块代码,以定义通常需要的变量,并在方法中使用它们。为什么此.title有效,而此.dialogoverlay无效?注释行可以正常工作,但我希望按照说明进行重构,这样就不必反复使用document.getElementById function CustomAlert(){ this.title = "This is My Title"; this.dialogoverlay = document.getElementById('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的样式。”因为
这个
函数引用了其他变量。请尝试使用对话框
而不是此
来回答您的问题,“为什么this.title有效,而this.dialogoverlay无效?”
“this”指的是什么取决于调用函数的方式。我想引用一下
“您可能会犯的一个常见错误是认为内部函数中的情况与外部函数中的情况相同。事实上,内部函数的上下文取决于如何调用它,而不是外部函数的上下文。”请添加一个说明如何以及何时调用此.render()。很可能
这个不是你所期望的那样。@Andreas真是太棒了!时间是个问题。我在onclick=“CustomAlert('somemessage')中使用它。所以,你是对的。尝试设置定义时,元素dialogoverlay元素不存在。我将通过addEventListener将html onlick转换为脚本,并将其放在文档准备就绪后。@JeffMatthews这与“计时”无关<如果找不到具有给定id的元素,则code>document.getElementById()
将返回null
,因此错误消息将是cannot。。。空值
。检查这个
的值,我想它将是窗口
@Andreas你是对的,Andreas。我的错误。错误确实是空的。我已经编辑了我的问题。代码是固定的,现在可以工作了。你帮了忙,却不知道!;-)经验教训:发布错误消息时要更加小心,因为一个词可以改变一切;)