Can';无法使用javascript更改显示属性

Can';无法使用javascript更改显示属性,javascript,css,image,Javascript,Css,Image,我试图在单击图像时显示一个对象(嵌入的twitch流)。除了我试图改变它的显示属性外,一切似乎都很正常。设置为显示:无,应改为display:block单击时 HTML JavaScript function showDiv() { document.getElementById('twitchStream').style.display = "block"; } 编辑 对象内容 <object id="twitchStream" class="center" type="ap

我试图在单击图像时显示一个对象(嵌入的twitch流)。除了我试图改变它的显示属性外,一切似乎都很正常。设置为
显示:无,应改为
display:block单击时

HTML

JavaScript

function showDiv() {
    document.getElementById('twitchStream').style.display = "block";
}
编辑

对象内容

<object id="twitchStream" class="center" 
type="application/x-shockwave-flash" height="378" 
width="620" id="live_embed_player_flash" data="http://www.twitch.tv/widgets/
live_embed_player.swf?channel=hsstarleague" bgcolor="#000000"><param 
name="allowFullScreen" value="true" />
<param name="allowScriptAccess" value="always" /><param name="allowNetworking" value="all" />
<param name="movie" value="http://www.twitch.tv/widgets/live_embed_player.swf" />
<param name="flashvars" value="hostname=www.twitch.tv&channel=hsstarleague&auto_play=true&start_volume=25" /></object>


我很抱歉设置了格式,我复制并粘贴了它,但遇到了一些问题。

如果您不介意使用jQuery,这里有一个简单的解决方案

function showDiv(){
   $('#twitchStream').show();
};

如果您不介意使用jQuery,这里有一个简单的解决方案

function showDiv(){
   $('#twitchStream').show();
};

尝试将JavaScript代码替换为以下代码:

window.showDiv = function() {
  document.getElementById('twitchStream').style.display = "block";
}
小提琴:


另外,请不要在生产环境中这样做-污染全局命名空间非常非常糟糕。

尝试用以下代码替换JavaScript代码:

window.showDiv = function() {
  document.getElementById('twitchStream').style.display = "block";
}
小提琴:


另外,请不要在生产环境中这样做-污染全局名称空间是非常非常糟糕的。

理论上,对象应该可以使用css属性设置样式。但是像flash和java小程序这样的对象是由它们各自的代码绘制的,有时浏览器对它们没有太多的控制

一种解决方案是将对象放入自己的div中,然后隐藏该div。众所周知,此技巧非常可靠,适用于flash:

<div id="twitchStream">
    <object id="twitchStreamObject">...</object>
</div>

...

现在,您的代码应该可以像编写的那样工作。

理论上,对象应该可以使用css属性进行样式设置。但是像flash和java小程序这样的对象是由它们各自的代码绘制的,有时浏览器对它们没有太多的控制

一种解决方案是将对象放入自己的div中,然后隐藏该div。众所周知,此技巧非常可靠,适用于flash:

<div id="twitchStream">
    <object id="twitchStreamObject">...</object>
</div>

...


现在,您的代码应该可以像编写的那样工作。

您考虑过使用jQuery吗?它使这些类型的事情更容易做。考虑将显示属性设置为“”(空字符串)而不是“块”。因为元素实际上不是div,所以我建议重命名它。正如@RobG所指出的,设置一个空字符串(从而恢复默认的可见显示)可能就是答案。对于这个特定的任务,您不需要jQuery,因为您尝试的操作应该适用于所有浏览器,可以追溯到IE5。但我建议您做的一件事是进行一些防御性编程-将
getElementById
的结果分配给一个var,然后在设置display属性之前检查它是否确实存在。对象的内容是什么?对象元素本身不一定是可见元素,它是一个不在CSS和样式规则范围内的元素。例如,图像元素被图像替换,元素的属性应用于图像。您是否考虑过使用jQuery?它使这些类型的事情更容易做。考虑将显示属性设置为“”(空字符串)而不是“块”。因为元素实际上不是div,所以我建议重命名它。正如@RobG所指出的,设置一个空字符串(从而恢复默认的可见显示)可能就是答案。对于这个特定的任务,您不需要jQuery,因为您尝试的操作应该适用于所有浏览器,可以追溯到IE5。但我建议您做的一件事是进行一些防御性编程-将
getElementById
的结果分配给一个var,然后在设置display属性之前检查它是否确实存在。对象的内容是什么?对象元素本身不一定是可见元素,它是一个不在CSS和样式规则范围内的元素。例如,图像元素被图像替换,元素的属性被应用于图像。那么显示属性的结果值是什么?好的,我可以试试,尽管我更喜欢用普通javascript。另外,我需要下载JQuery库才能使用它吗?或者我可以通过web导入它吗?@RobG css值将等于display=block@JacobGreenway你不需要下载Google托管的库这里是jquery,我通常在本地主机上编写代码时使用可下载的jquery库,但当我将网站上线时,我使用它像谷歌的s@swsa-那么这和OP已经在做的有什么不同呢?除了需要4000行当前不在页面中的代码之外,display属性的结果值是什么?好的,我可以尝试一下,尽管我更喜欢用普通javascript。另外,我需要下载JQuery库才能使用它吗?或者我可以通过web导入它吗?@RobG css值将等于display=block@JacobGreenway你不需要下载Google托管的库这里是jquery,我通常在本地主机上编写代码时使用可下载的jquery库,但当我将网站上线时,我使用它像谷歌的s@swsa-那么这和OP已经在做的有什么不同呢?除了需要4000行当前不在页面中的代码之外。然后将
窗口.showDiv
更改为
var showDiv
(在
标题
中),但两者都是全局的?确切地说,这个变量无论哪种方式都是全局的,那么您的评论要点是什么?只是一个标点错误…:d OP已经使用函数声明声明了函数,将其更改为函数表达式和赋值对代码没有任何影响。有没有方法在不使用全局变量的情况下执行此操作?抱歉,如果我听起来很笨,我刚刚开始从事web开发工作,如果“污染全局名称空间”不好,我觉得有更好的方法。然后将
窗口。showDiv
更改为
var showDiv
(在
头部内),但两者都是全局的?确切地说,这个变量将是全局的,那么你评论的重点是什么呢?只是