Can';无法使用javascript更改显示属性
我试图在单击图像时显示一个对象(嵌入的twitch流)。除了我试图改变它的显示属性外,一切似乎都很正常。设置为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
显示:无默认为code>,应改为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
(在头部内),但两者都是全局的?确切地说,这个变量将是全局的,那么你评论的重点是什么呢?只是