我必须使用某人的现有代码作为框架,并且我开发了一个我现在需要使用的jQuery / JavaScript应用程序。如果从以下代码中调用它,它可以正常工作,但我需要从页面的其他位置传递nnn
的值。因为我不太了解jQuery结构,到目前为止我的努力都失败了。
<script>
$(function() {
.
.
.
var BuildTree = function(centralID) {
...
}
BuildTree(nnn);
});
我想做类似的事情:
function BuildTree(...) {
...
}
谢谢!
答案 0 :(得分:1)
你有范围问题,你在你传递给jQuery的函数范围内定义了BuildTree(或者在这种情况下为$)。
这是一个javascript方面的问题,没有jQuery,函数定义了一个范围,它意味着你在一个函数内定义的东西就在它内部。
function test() {
var variable = 2; //variable within the scope of test
}
variable //undefined
所以,如果你需要在外面使用它,你可以在函数之外定义它,然后在里面使用它或做类似的事情:
$(function(){
...
window.BuildTree = BuildTree //global scope
...
});
同样要小心大写,这意味着你要通过javascript标准定义一个构造函数
答案 1 :(得分:0)
BuildTree函数的范围仅限于最外层函数的范围。您只需将函数定义移到$(function() {
函数之外。
var BuildTree = function(centralID) {
...
}
$(function() {
BuildTree(nnn);
});
BuildTree(nnn); // call it again.
之间没有(主要)差异
var FunctionA = function () {
}
和
function FunctionA() {
}
答案 2 :(得分:0)
Javascript具有函数作用域,这意味着函数内部定义的变量在该函数之外是不可访问的。在函数外部无法访问在jQuery函数内声明的任何内容。
$(function() {
//anything defined in here will not be accessible outside of this jQuery function
var foo = 'bar';
var buildTree = function(centralId) {
};
});
//this will be undefined since it was declared inside of the jQuery function
buildTree(1);
//this will also be undefined
console.log(foo);
如果要访问buildTree函数,则需要在jQuery函数内部执行此操作。
答案 3 :(得分:0)
如果BuildTree只是一个函数,则不需要将其放在$(function() {
中。你应该能够做到这一点:
<script>
function BuildTree(centralId) {
// do stuff
}
</script>
现在您应该可以从页面的任何位置调用此函数。如果您希望在DOM完成加载时调用BuildTree,请执行以下操作:
<script>
$(function() {
BuildTree(1234);
});
</script>