3
$(document).ready(function() {

var v = $("input[name=link]").val();

$('p').on('click', function () {
    console.log(v);
    console.log('hello'); 

})  
});

上面是我编写的 jQuery/JS 代码。它应该在输入字段中获取值,并在我单击段落时将其打印到控制台。

我已经声明v为全局变量,但它没有打印到控制台。仅当我将var v声明放入使其成为局部变量的函数中时,它才有效。为什么会这样?我认为全局变量总是应该在整个代码中起作用。请教育我。

4

2 回答 2

4

这不是范围问题,v从您作为事件处理程序提供给 jQuery 的回调中可以完全看到。

您的代码的问题在于v,一旦文档准备好,就会立即对其进行评估。如果您更改输入的值,v则不会更改,如果最初为空,则它保持为空。v不是某种指向输入字段的指针,当输入改变时它没有理由改变。

要确保使用单击时字段的值,请使用以下代码:

$(document).ready(function() {
    $('p').on('click', function () {
        var v = $("input[name=link]").val();
        console.log(v);
        console.log('hello'); 
    })  
});
于 2013-03-30T17:39:34.627 回答
0

v问题是您在更改文本后没有更改值textbox

准备好调用后,您将 textbox.ie 的值分配为空。

请参阅下面的代码如何工作。

   var v = 10;
   alert("" + v);
   myFunction();

    function myFunction()
       {
       v = 20;
       }

    alert("" + v);
于 2013-03-30T17:40:45.363 回答