Javascript 如何在jQuery中设置永久值
我想用jQuery为div元素设置一个永久值 完整的js文件:Javascript 如何在jQuery中设置永久值,javascript,jquery,html,Javascript,Jquery,Html,我想用jQuery为div元素设置一个永久值 完整的js文件: $(function () { var $a; var $b; $('button').click(function () { $a = $('#a').val(); $b = $('#b').val(); var $big = getBigger($b, $a); var $small = getSmaller($b, $a);
$(function () {
var $a;
var $b;
$('button').click(function () {
$a = $('#a').val();
$b = $('#b').val();
var $big = getBigger($b, $a);
var $small = getSmaller($b, $a);
$('#bigger').text($big);
$('#smaller').text($small);
});
});
//a simple function for getting a bigger element
function getBigger(a, b) {
return a ^ (a ^ b) & -(a < b);
}
//a simple function for getting a smaller element
function getSmaller(a, b) {
return (a < b) ? a : b;
}
$(函数(){
var$a;
var$b;
$(“按钮”)。单击(函数(){
$a=$('#a').val();
$b=$('#b').val();
var$big=getbiger$b$a;
var$small=getsmall($b,$a);
$('#biger').text($big);
$('较小').text($较小);
});
});
//获取较大元素的简单函数
函数getbiger(a,b){
返回a^(a^b)和-(a
完整的html文件:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8" />
<link rel="stylesheet" type="text/css" href="style/style.css">
<title>Compare</title>
</head>
<body>
<form>
Enter a: <input type="number" id="a"><br/>
Enter b: <input type="number" id="b"><br/>
<button> Compare</button>
<div id="bigger"></div>
<div id="smaller"> </div>
</form>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script src="js/app.js"></script>
</body>
</html>
比较
输入a:
输入b:
比较
问题是,当我离开作用域时,变量会被破坏
现在我意识到我的错误是,当在
表单
元素中添加
时,每次按下按钮时,表单中的数据都会被重置当您在函数中运行代码时,它会创建一个作用域。使用var
语句定义的每个变量仅在该范围内可用
要在当前范围之外创建使用的变量,可以声明一个变量而不事先放入var
,也可以直接写入window.varname=value
除此之外,在您的代码$('#biger').text($big)代码>变量$big
甚至从未定义过,所以这可能就是问题所在
设置一个元素文本独立于作用域或变量。试试这个
要访问:
$("#a").data('value');
设置
$("#a").data('value' , 'whatevervalue');
要在不使用JQuery的情况下访问,请执行以下操作:
document.getElementById("a").dataset.value;
不使用JQuery进行设置
document.getElementById("a").dataset.value = "Some Value";
Div不能保存Value属性,除非您使用:
document.getElementById("a").setAttribute("value" , "val");
然后将其分配到div内部:
$("#myDivElement").html($("#a").data('value'))
变量$big
在代码中未绑定。此外,当设置元素的文本时,即使原始变量超出范围,该文本也会保留。在您的案例中还发生了一些其他情况。如果“未绑定”是指未声明,则我在文件开头声明了它,并且当.text()方法设置为此范围外时,我收到一个永久值。在您的单击处理程序运行后,似乎有其他内容正在覆盖div的文本。你能在一个例子中重现这个问题吗?我已经编辑了这个问题,这是我拥有的完整的js代码(除了getsmall和getbiger()方法)。它离MCVE还很远。为了重现您的问题,我们需要您的HTML标记以及getbiger()
和getminger()
的代码,如果这些函数是问题的一部分。正如我之前评论中的链接所解释的那样,您的目标应该是提供体现该问题的最小数量的代码。