Javascript jQuery单击事件不发生';我好像不工作
我正在练习使用jQuery做一个简单的计算器,我觉得代码本身非常简单,但无论我做什么,都不会发生任何事情,就好像没有链接到beging的js文件一样。以下是jQuery代码:Javascript jQuery单击事件不发生';我好像不工作,javascript,jquery,Javascript,Jquery,我正在练习使用jQuery做一个简单的计算器,我觉得代码本身非常简单,但无论我做什么,都不会发生任何事情,就好像没有链接到beging的js文件一样。以下是jQuery代码: function ud(n){ $("#display").append += n; } function ans(c){ c = eval($("#display").html); $("#display").append = c
function ud(n){
$("#display").append += n;
}
function ans(c){
c = eval($("#display").html);
$("#display").append = c;
}
function clc(){
$("#display").append = '';
}
$("#button0").click(ud(0))
$("#button1").click(ud(1));
$("#button2").click(ud(2));
$("#button3").click(ud(3));
$("#button4").click(ud(4));
$("#button5").click(ud(5));
$("#button6").click(ud(6));
$("#button7").click(ud(7));
$("#button8").click(ud(8));
$("#button9").click(ud(9));
$("#addButton").click(ud('+'));
$("#subtractButton").click(ud('-'));
$("#multiplyButton").click(ud('*'));
$("#clearButton").click(clc());
$("#equalsButton").click(ans());
$("#divideButton").click(ud('/'));
以下是html:
<tr>
<td colspan="4"><input id="display" name="display" disabled></input></td>
</tr>
<tr>
<td><button id="button1" value="1">1</button></td>
<td><button id="button2" value="2">2</button></td>
<td><button id="button3" value="3">3</button></td>
<td><button id="addButton">+</button></td>
</tr>
<tr>
<td><button id="button4" value="4">4</button></td>
<td><button id="button5" value="5">5</button></td>
<td><button id="button6" value="6">6</button></td>
<td><button id="subtractButton">-</button></td>
</tr>
<tr>
<td><button id="button7" value="7">7</button></td>
<td><button id="button8" value="8">8</button></td>
<td><button id="button9" value="9">9</button></td>
<td><button id="multiplyButton">*</button></td>
</tr>
<tr>
<td><button id="clearButton">C</button></td>
<td><button id="button0" value="0">0</button></td>
<td><button id="equalsButton">=</button></td>
<td><button id="divideButton">÷</button></td>
</tr>
1.
2.
3.
+
4.
5.
6.
-
7.
8.
9
*
C
0
=
÷
有人能解释一下我做错了什么吗?有更简单的方法吗?提前感谢您我修改了您的代码并进行了重构。 它应该会起作用 在原始代码中,包含一些错误语法:
val()
,而不是使用append()
,并且在代码中使用的是错误的
功能ud(e){
var currentVal=$(“#显示”).val();
$(“#display”).val(currentVal+e.data.n);
}
功能ans(c){
var result=eval($(“#display”).val();
$(“#显示”).val(结果);
}
函数clc(){
$(“#显示”).val(“”);
}
对于(变量i=0;i<10;i++){
$(#按钮'+i)。单击({n:i},ud);
}
$(“#添加按钮”)。单击({n:'+'},ud);
$(“#减法按钮”)。单击({n:'-'},ud);
$(“#multiplyButton”)。单击({n:'*},ud);
$(“#divideButton”)。单击({n:'/'},ud);
$(“#清除按钮”)。单击(clc);
$(“#相等按钮”)。单击(ans)代码>
1.
2.
3.
+
4.
5.
6.
-
7.
8.
9
*
C
0
=
÷
您正在调用.click()事件函数中的函数,但它需要函数引用或匿名函数作为参数
在表示数字的计算器按钮中添加一个通用类名(例如“numberKey”)
1
一次选择所有这些按钮,并对所有按钮使用单击事件处理程序
$(function() {
$('button.numberKey').click(updateDisplay);
});
function updateDisplay(clickEventObject) {
// The button that was clicked can be referenced using
// the 'this' keyword.
// Variable-ize the button element into a jQuery object.
let $button = $(this);
// Get the 'value' attribute of the button
let number = $button.attr('value');
// Get the displayed value.
var expression = $("#display").val();
// Append the number to the display's value
$("#display").val(`{$expression}{$number}`);
}
仅供参考,jQuery.append不是一个可以附加到或设置为值的属性。它是一个可以传递字符串值的函数。并且该值将附加到所选元素的内容中。
如果要清除输入元素,应将其值设置为空字符串:
$('#display').val('');
“ans”(答案?)功能的工作原理如下:
function solve_ans() {
let expression = $('#display').val();
let solution = eval(expression);
$('#display').val(solution);
}
另外,请注意,如果在任何上下文中多次使用同一选择器,则通常值得将选择的结果缓存/存储在变量中,然后重用它,而不是重新选择相同的元素。
祝你好运 click()
需要一个函数,但您调用的是不返回函数的ud()
。将需要执行$(“#按钮0”)。单击(()=>ud(0))
或$(“#按钮0”)。单击(函数(){ud(0)}
也是append()
函数。你用错了。查看并检查浏览器开发工具控制台中的错误(F12),我一定要坐下来阅读文档。你的代码在你更新它之前就已经运行了,除了它返回了双精度的数字9之外,但是我把它改成了0,一切都很好。谢谢你的解释!我很高兴我能帮上忙。嘿,在我做了一个操作并单击“相等”按钮后,我如何才能使它“重置”并显示一个位数?
function solve_ans() {
// Referring to this $display variable avoids repeatedly re-selecting the same elements from the DOM whenever you may need to refer to them.
let $display = $('#display');
let expression = $display.val();
let solution = eval(expression);
$display.val(solution);
$display.addClass('solution').removeClass('expression');
}