谁能告诉我为什么这不起作用:
$(function() {
var damg = $(".hidden").val();
$("button").click(function() {
alert(damg);
});
});
jsFiddle: http://jsfiddle.net/raFnT/
使用全局变量好吗?我也读到,这是一个慢的选择比每次输入?
详细说明:
我有这个:
$("button").click(function() {
alert(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);
});
你搞反了,全局变量必须写在函数的外部。
你的代码不能工作,因为。hidden没有值。
http://jsfiddle.net/raFnT/2/除非你真的需要全局变量,否则使用全局变量是不好的做法。我不知道你说的"每次都打"是什么意思。'
同时,您没有在click处理程序中重新加载该值。
$(function() {
$("button").click(function() {
var damg = $(".hidden").val();
alert(damg);
});
});
http://jsfiddle.net/raFnT/6/为了得到一个好的答案,OP想要的是blur
函数。
$(function() {
var damg;
$(".hidden").blur(function () {
damg = $(".hidden").val();
});
$("button").click(function() {
alert(damg);
});
});
http://jsfiddle.net/raFnT/7/您的示例正在工作。问题是你正在文件准备上设置damg
。在"文档就绪"状态下,文本框中没有值。如果你指定一个默认值,它会在按钮点击时提醒该值。您可以在下面的页面中看到这一点:http://jsfiddle.net/raFnT/1/
如果您想更改每个按钮上的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(); );
});
});
我想补充一下,这是一个相同的解决方案,但使用了一个更改函数来监视更改。
JS
var damg;
$('#contact-name').on('change', function(){
damg = $(".hidden").val();
});
这不是一个全局变量。这是一个作用域为匿名函数的变量,你传递给jQuery的ready处理程序。
不工作的原因(我认为不工作的意思是它警告一个空字符串)是因为在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>