我的dom头部有一个javascript变量,我需要在外部js文件中访问它,但它似乎未定义。
在我脑海里,我有类似的东西。
<head>
<script type="text/javascript">
var overlayAlignment = ["left:20px","right:40px","left:50px"];
</script>
</head>
外部.js文件
$(document).ready(function () {
alert(overlayAlignment[0]);
});
在我的外部js文件中,我想使用变量但是这样的东西一直都是未定义的,任何想法我做错了什么。
我发现如果我将overlayAlignment变量添加到.js文件中,我可以从头部的外部.js运行一个函数来设置overlayAlignment变量。
<head>
<script type="text/javascript">
setOverlayAlignment("value1", "value2", "values3");
</script>
</head>
外部.js文件
function setOverlayAlignment(value1, value2, value3) {
overlayalignment[0] = value1;
overlayalignment[1] = value2;
overlayalignment[2] = value3;
}
当我尝试在我的jquery函数中使用它时,这仍然是未定义的。很奇怪,我以为$(document).ready告诉函数要等到dom加载运行,如果是这样的话,为什么overlayAlignment在运行时是未定义的?
我需要像这样做,因为overlayAlignment变量值只在运行时才知道。
答案 0 :(得分:3)
您需要使用head
标记围绕script
中的JavaScript代码。
因此,您的第一个例子应该是:
<head>
<script>
var overlayAlignment = ["left:20px","right:40px","left:50px"];
</script>
</head>
你的第二个应该是:
<head>
<script>
setOverlayAlignment("value1", "value2", "values3");
</script>
</head>
答案 1 :(得分:0)
很奇怪只是尝试了这个并且它有效。奇怪的是我认为window.onload和$(document).ready是一回事。
window.onload = function () {
$(document).ready(function () {
alert(overlayAlignment[0]);
});
}
当调用$(document).ready时,显然overlayAlignment尚未就绪,但是在window.onload之后它将可用。