我目前正在制作一个简单的基于网络的计算器。我无法将我的按钮值分配到"屏幕"我要显示刚刚按下的数字值的区域。我可以将值转换为javascript变量,但是当我尝试将其写入屏幕区域时,它总是以未定义的形式出现。
这是我的代码:
$(".numbers").click(function(){
currentValue = ($(this).val());
$("#screen").html(function(){
return "<p> " + currentValue.toString() + "</p>";
})
});
问题似乎是代码运行了两次,但只有当我将它设置为返回时(如果我使用return&#34; test&#34;它工作正常)。
答案 0 :(得分:1)
根据您提供的代码,我相信这就是您所需要的:
$(".numbers").click(function() {
currentValue = $(this).val();
$("#screen").html("<p> " + currentValue + "</p>")
});
我还认为,您应该使用.html()
或使用输入框作为屏幕并使用append()
,而不是使用.val()
。如何使用.html
,每次按下数字时都会覆盖屏幕。您仍然可以使用.html()
,但您必须将原始屏幕值与新按钮号连接:
$('#screen').html($('#screen').html() + currentValue);
但最好使用.append()
:
$('#screen').append(currentValue);
看一下使用输入框的FIDDLE:
<input type="text" id="screen"></input>
<button class="numbers" value="1">1</button>
<button class="numbers" value="2">2</button>
<button class="numbers" value="3">3</button>
$(".numbers").on('click', function() {
var $s = $('#screen');
$s.val($s.val() + $(this).val())
});
每次按下一个数字,它会将其添加到当前数字字符串的末尾,而不是覆盖所有数字。
答案 1 :(得分:-1)
看起来你的代码正常工作,向我们展示你的HTML。
$(".numbers").on("click", function(){
currentValue = $(this).val();
$("#screen").html("<p> " + currentValue + "</p>");
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<button class="numbers" value="2">Click me</button>
<div id="screen"></div>
&#13;