有人可以解释为什么这不起作用:
$(function() {
var damg = $(".hidden").val();
$("button").click(function() {
alert(damg);
});
});
jsFiddle:http://jsfiddle.net/raFnT/
使用全局变量是否合适?我还读过,每次打字都比较慢吗?
详细解释:
我有这个:
$("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);
});
答案 0 :(得分:7)
你有它倒退,一个全局变量必须写在函数的外面。
您的代码不起作用,因为.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);
});
});
答案 1 :(得分:1)
你的例子正在运作。问题是您正在为文档准备好damg
。在准备好文档时,文本框中没有任何值。如果您指定了默认值,它将在按钮单击时提醒该值。你可以在这个小提琴中看到这个:http://jsfiddle.net/raFnT/1/
如果您想在每个按钮上更改damg
的值,请点击将代码更改为:
var damg;
$("button").click(function() {
damg = $(".hidden").val();
alert(damg);
});
答案 2 :(得分:0)
当函数首次执行时,会立即设置damg变量 - 您需要在click函数本身中设置var,以便它在那时从字段中获取值。
不确定为什么这会被投票 - 这就是你所要求的:
$(function() {
var damg = $(".hidden").val();
$("button").click(function() {
damg = $(".hidden").val();
alert(damg);
});
});
甚至更简单:
$(function() {
$("button").click(function() {
alert( $(".hidden").val(); );
});
});
答案 3 :(得分:0)
只需添加我的两分钱,这里是相同的解决方案,但使用更改功能来监控更改。
<强> JS 强>
For each cell in Range(<your range>)
If cell.value = '0000000000' then
cell.value = cells(cell.row,cell.column-1).value
end if
Next
答案 4 :(得分:-1)
这不是一个全局变量。这是一个范围为你传递给jQuery的就绪处理程序的匿名函数的var。
不起作用的原因(由于不起作用,我认为你的意思是警告空字符串)是因为在DOM加载时分配了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>