Javascript document.getElementById新浏览器

Javascript document.getElementById新浏览器,javascript,Javascript,我被利用了 document.getElementById("MyDiv1").style = "display:block"; 对于使用javascript显示MyDiv1,可以在我的pc上使用,但不能在其他pc mac上使用,则我使用: MyDiv1.style.display = "block"; 这在其他pc上也能工作!但是函数中的错误 之前的函数: function Show(What){ document.getElementById("MyDiv1").style = "dis

我被利用了

document.getElementById("MyDiv1").style = "display:block";
对于使用javascript显示MyDiv1,可以在我的pc上使用,但不能在其他pc mac上使用,则我使用:

MyDiv1.style.display = "block";
这在其他pc上也能工作!但是函数中的错误

之前的函数:

function Show(What){
document.getElementById("MyDiv1").style = "display:block";  }
我现在使用的函数:Error

function Show(What){
What.style.display = "block"; } 
错误消息:

TypeError: Cannot set property 'display' of undefined
message: "Cannot set property 'display' of undefined"
stack: (...)
get stack: function () { [native code] }
set stack: function () { [native code] }
__proto__: Error

编写此类函数的安全方法是在继续之前检查第一个方法是否返回合适的对象,因此您至少应该执行以下操作:

function show(id) {
  var el = document.getElementById(id);
  if (el) {
    el.style.display = "block"; // Consider using '' (empty string) instead
  }
}
因为如果getElementById找到一个DOM元素,它将被返回,并且您可以假设它将具有合适的样式属性。如果找不到这样的元素,它将返回null,函数将不执行任何操作,或者您可能会选择抛出某种错误

此外,如果要通过隐藏元素

element.stlye.display = 'none';
然后,最好通过以下方式再次向他们展示:

element.stlye.display = ''; // empty string

通过这种方式,元素可以采用其默认的显示属性或通过CSS继承的任何属性。并非所有可见元素都有块显示,例如span是内联的,tr是表格行或块,具体取决于浏览器等等。

您能给我们展示一个工作流程来演示这一点吗?您是如何使用show的?为什么传递什么类型的值?如果找不到ID为“MyDiv1”的元素,getElementById将返回null,null.style将返回undefined,因此错误引用undefined。代码可能是在页面中存在元素之前执行的,或者具有该ID的元素根本不存在。我严重怀疑.style=display:block是否有效?@RobG Correction:null.style会产生错误,而不是未定义的错误。如果OP收到错误,则无法设置未定义的属性“display”,那么这就意味着什么有值但没有样式属性。我听说document.getElementById在另一台电脑上不工作,所以我写id.style.display=block我知道的唯一一个浏览器getElementById不工作,但使用id作为全局变量是IE 4,可能是5,不确定MS是什么时候引入getElementById的,但IE 6也有。在这种情况下,可以使用document.all。但是使用这么旧的浏览器的人对现代网站的体验很差,很可能根本无法使用。