我有一个非常基本的jsfiddle。我收到该函数的引用错误。我不明白同样的原因。这是jsfiddle:
https://jsfiddle.net/akshaysuri/xxmq8e3m/
JavaScript的:
function f1(){
var str = "aaa,bbb,ccc,ddd,eee,fff";
var strArr = str.split(",");
f2(strArr,strArr.length);
}
function f2(arr,len){
alert(len);
alert(arr);
}
HTML:
<body>
<button type="button" onclick="f1()">Click Me!</button>
</body>
我在我的应用程序中遇到的真正问题是,当我将数组传递给f2时,只有第一个元素传递给f2而不是整个数组。我试图用jsfiddle测试它,但首先我需要解决参考错误。
答案 0 :(得分:1)
尝试将其绑定到窗口,如此
window.f1 = function(){
var str = "aaa,bbb,ccc,ddd,eee,fff";
var strArr = str.split(",");
f2(strArr,strArr.length);
}
当小提琴设置为onLoad时,它会将您的代码包装在window.onload=function(){/*code*/}
中,这意味着范围不再是全局的。
我在申请中遇到的真正问题是,当我通过时 数组到f2,只有第一个元素传递给f2而不是整个元素 阵列。
正在传递数组,只是alert()将其格式化为原始字符串,这是误导性的。尝试警告arr [0]或arr [1]。
答案 1 :(得分:1)
这是一个范围问题,约瑟夫是正确的。
<强>说明强>
如果使用窗口变量,则可以强制使用全局范围。 但是,您可以更改声明顺序以更正代码。
<body>
<script>
function f1(){
var str = "aaa,bbb,ccc,ddd,eee,fff";
var strArr = str.split(",");
f2(strArr,strArr.length);
}
function f2(arr,len){
alert(len);
alert(arr);
}
</script>
<button type="button" onclick="f1()">Click Me!</button>
</body>
这意味着如果您在浏览器解释时首先声明您的javascript代码,它将能够找到您的功能。
<body>
<script>
function f1(){
var str = "aaa,bbb,ccc,ddd,eee,fff";
var strArr = str.split(",");
f2(strArr,strArr.length);
}
function f2(arr,len){
alert(len);
alert(arr);
}
</script>
<button type="button" onclick="f1()">Click Me!</button>
</body>