Javascript 访问document.ready中的变量
我知道以前有人问过这个问题,但我的可能有点不同 我有一个HTML页面,我几乎无法控制,并且对JavaScript的使用有限制。在这个HTML中,我是一个变量,在本例中是一个图像URL数组 在一个外部文件中,我试图使用这个变量。该变量在该文件中的任何位置都有效,但只要我尝试在document.ready中显示它,它就会变得未定义 令人尴尬的是,如果不将外部脚本写入文档,我就无法调用外部脚本。编写脚本(它位于易趣内,您无法轻松调用外部脚本) 有人能帮助解释为什么它不起作用,或者有更好的方法吗 我可以完全控制JavaScript文件,但我可以访问HTML,但仅限于我可以在其中编写的内容,而不会被eBay阻止。因此,必须使用document.write 我的代码如下(精简版):Javascript 访问document.ready中的变量,javascript,jquery,variables,Javascript,Jquery,Variables,我知道以前有人问过这个问题,但我的可能有点不同 我有一个HTML页面,我几乎无法控制,并且对JavaScript的使用有限制。在这个HTML中,我是一个变量,在本例中是一个图像URL数组 在一个外部文件中,我试图使用这个变量。该变量在该文件中的任何位置都有效,但只要我尝试在document.ready中显示它,它就会变得未定义 令人尴尬的是,如果不将外部脚本写入文档,我就无法调用外部脚本。编写脚本(它位于易趣内,您无法轻松调用外部脚本) 有人能帮助解释为什么它不起作用,或者有更好的方法吗 我可以
console.log(“图像:+prodImgs”);
$(文档).ready(函数(){
console.log(“文档中的图像就绪:+prodImgs”);
});代码>
var prodImgs=新数组();
产品[0]=”http://example.com/Media/images/testImages/1.jpg";
产品[1]=”http://example.com/Media/images/testImages/1.jpg";
产品[2]=”http://example.com/Media/images/testImages/1.jpg";
产品[3]=”http://example.com/Media/images/testImages/1.jpg";
prodImgs=prodImgs.filter(函数(v){
返回v!=''
});
文件。填写(“”);
如果您在易趣上查看源代码,他们已经在主页上引用了jquery 1.7版
暗示可能存在冲突。我强烈建议不要使用jquery,除非你必须这样做,因为无论eBay决定如何处理他们的通用代码库,你都会心血来潮
使用iframe嵌入内容或功能将允许您拥有独立的代码,不会与ebay的核心冲突,尽管根据您试图实现的目标,您可能会出现跨站点脚本错误
也许两者兼而有之。我想你是想嵌入幻灯片。为此在别处托管一个iframe,然后根据需要保留一般内容和纯javascript
请记住使用闭包和限制全局变量,因为您可能会再次与ebays基代码冲突。您的意思是要在html页面中声明一个变量吗
想访问.js文件中的变量吗??如果是这样,那么在html文件中声明变量时不要使用var
关键字
不要用这个
var prodImgs=new Array();
使用下面的一个
prodImgs=new Array(); -- use this.
现在您可以访问.js文件中的prodImgs
变量dont do document.write。我必须。。。没有它我无法调用脚本。。对于eBay来说,这是阻止大多数javascript的最好方法。文档的位置是否与脚本相同?是example.com吗?HTML保存在eBay中,脚本保存在我的服务器上。这确实适用于大多数情况。我可以在js文件中使用变量。。在本例中,第一个console.log显示URL的精细。。。但是一旦我在文档中调用它。ready之后加载,它们是未定义的。这里一定有一些事情没有完全记录下来-如果prodImgs
在范围内并且在控制台中工作。log
在.ready()
之外,那么它应该在范围内并且在范围内工作。谢谢Shaun,正在使用它的项目模板在eBay中是iFrame,并且该框架还没有jQuery。。。但这是个好主意!好的,谢谢。我相信您已经检查过了,但以防万一,请注意它不是一个名称中包含Jquery的链接。如果iframe源代码中有任何.js引用,请仔细检查是否没有jquery和/或$assignments。您还可以尝试使用jQuery.ready?关键字var
的要点是指示变量只属于当前范围,而不是全局范围;基本上,它只在代码位于创建其自身作用域(如函数)的内部时才起作用,这里不是这种情况。但据我所知,如果您希望将变量从html文件共享到js文件,则这一点很重要。这是唯一的选择。如果你想试试,你可以。。