Javascript jQuery全局变量
有人能解释一下为什么这样不行吗:Javascript jQuery全局变量,javascript,jquery,global-variables,Javascript,Jquery,Global Variables,有人能解释一下为什么这样不行吗: $(function() { var damg = $(".hidden").val(); $("button").click(function() { alert(damg); }); }); jsFiddle: 使用全局变量好吗?我也读过,它是一个比每次打字都慢的选项 详细说明: 我有这个: $("button").click(function() { alert(damg);
$(function() {
var damg = $(".hidden").val();
$("button").click(function() {
alert(damg);
});
});
jsFiddle:
使用全局变量好吗?我也读过,它是一个比每次打字都慢的选项
详细说明:
我有这个:
$("button").click(function() {
alert(damg);
});
damg是输入的一个值:var damg=$(“.hidden”).val()代码>
当您在输入中键入内容,然后按下按钮时,请提醒该输入的值
我可以用
$("button").click(function() {
var damg = $(".hidden").val();
alert(damg);
});
但有一点是,我将有100个函数,结果如下:
$("button1").click(function() {
var damg = $(".hidden").val();
alert(damg);
});
$("button2").click(function() {
var damg = $(".hidden").val();
alert(damg);
});
$("button3").click(function() {
var damg = $(".hidden").val();
alert(damg);
});
$("button4").click(function() {
var damg = $(".hidden").val();
alert(damg);
});
$("button5").click(function() {
var damg = $(".hidden").val();
alert(damg);
});
var damg = $(".hidden").val();
$("button1").click(function() {
alert(damg);
});
$("button2").click(function() {
alert(damg);
});
$("button3").click(function() {
alert(damg);
});
$("button").click(function() {
alert(damg);
});
$("button4").click(function() {
alert(damg);
});
$("button5").click(function() {
alert(damg);
});
我想设置一个全局变量,这样在每个函数上我就不需要再次调用该函数了
大概是这样的:
$("button1").click(function() {
var damg = $(".hidden").val();
alert(damg);
});
$("button2").click(function() {
var damg = $(".hidden").val();
alert(damg);
});
$("button3").click(function() {
var damg = $(".hidden").val();
alert(damg);
});
$("button4").click(function() {
var damg = $(".hidden").val();
alert(damg);
});
$("button5").click(function() {
var damg = $(".hidden").val();
alert(damg);
});
var damg = $(".hidden").val();
$("button1").click(function() {
alert(damg);
});
$("button2").click(function() {
alert(damg);
});
$("button3").click(function() {
alert(damg);
});
$("button").click(function() {
alert(damg);
});
$("button4").click(function() {
alert(damg);
});
$("button5").click(function() {
alert(damg);
});
如果是向后的,则必须在函数外部写入全局变量
$(function() {
var damg;
$(".hidden").blur(function () {
damg = $(".hidden").val();
});
$("button").click(function() {
alert(damg);
});
});
您的代码无法工作,因为.hidden没有值
除非您真的需要全局变量,否则使用全局变量是不好的做法。我不知道你说的“每次都打”是什么意思
此外,您没有在单击处理程序中重新加载该值
$(function() {
$("button").click(function() {
var damg = $(".hidden").val();
alert(damg);
});
});
为了得到一个好的答案,OP需要的是blur
功能
$(function() {
var damg;
$(".hidden").blur(function () {
damg = $(".hidden").val();
});
$("button").click(function() {
alert(damg);
});
});
你的例子很有效。问题是您正在文档就绪上设置damg
。文档准备就绪时,文本框中没有值。如果您指定一个默认值,它将在单击按钮时警告该值。你可以在这把小提琴上看到这一点:
如果要更改每个按钮上的damg
值,请单击将代码更改为:
var damg;
$("button").click(function() {
damg = $(".hidden").val();
alert(damg);
});
damg变量是在函数第一次执行时立即设置的——您需要在click函数本身中设置该变量,以便它在此时从字段中获取值
不知道为什么会被否决-这是你要求的:
$(function() {
var damg = $(".hidden").val();
$("button").click(function() {
damg = $(".hidden").val();
alert(damg);
});
});
或者更简单地说:
$(function() {
$("button").click(function() {
alert( $(".hidden").val(); );
});
});
这不是一个全局变量。这是一个作用域为传递给jQuery的就绪处理程序的匿名函数的变量
不起作用的原因(不起作用,我想你的意思是它警告一个空字符串)是因为加载DOM时分配了damg
。此时,您的文本框没有值。所以它实际上是起作用的。如果在每次单击按钮时都需要文本框的值,则需要在单击处理程序中获取它的值
$(function() {
$("button").click(function() {
var damg = $(".hidden").val();
alert(damg);
});
});
您可以通过执行以下操作来缓存DOM查找:
$(function() {
var damg = $(".hidden");
$("#one").click(function() {
alert("button one: " + damg.val());
});
$("#two").click(function() {
alert("button two: " + damg.val());
});
});
<input type="text" class="hidden" placeholder="Type text here">
<button id="one">Click me(1)!</button>
<button id="two">Click me(2)!</button>
$(函数(){
var damg=$(“.hidden”);
$(“#一”)。单击(函数(){
警报(“按钮一:+damg.val());
});
$(“#2”)。单击(函数(){
警报(“按钮二:+damg.val());
});
});
点击我(1)!
点击我(2)!
只需加上我的两分钱,这里有相同的解决方案,但使用更改功能来监视更改
JS
var damg;
$('#contact-name').on('change', function(){
damg = $(".hidden").val();
});
这很好用。问题是在调用var damg=$(“.hidden”).val()时代码>,该字段还没有值。而且damg
不是全局的。它是即时功能的本地。在输入中键入一些内容,然后按下按钮。然后?它将警告一个空值。因为输入字段的值在页面加载时分配给damg
,而不是单击按钮时。如果希望在字段值更改时更新damg
,则必须为文本字段设置change
事件处理程序。字符串不会自动更新。当您按下按钮时,它不会检查其值吗?否。.val()
返回一个字符串,您将该字符串分配给damg
。单击按钮时,您只是在回显字符串,该字符串是在调用var damg=$(“.hidden”).val()时指定的代码>。你错了。在输入中键入一些内容,然后按click me。如果我有100个函数,我必须设置var damg=$(“.hidden”).val();100次,这是非常糟糕的解决方案。这就是为什么我试图将变量设置为全局变量,然后在输入中添加value='to'something',你说输入中没有任何内容。你有没有试着在输入中输入一些东西,然后点击按钮?我想我不会再帮你了,如果有什么可怕的事情,那就是你的问题。是的,现在检查我的问题。你也可以理解。谢谢你,更喜欢它。谢谢模糊是否对.text().length和任何其他事件计数?或者仅针对.val()?再次出错。更改输入值并单击按钮。到底是什么问题?我的示例在单击按钮时显示默认值。如果希望每次都更改该值,请查看我提供的建议代码更改。您可以在这里看到它的作用:如果我需要在100个不同的函数中使用该变量,我必须设置100x var damg=$(“.hidden”).val()?您可以将模糊事件添加到.hidden,这样无论何时更改,您的变量都会更新。