Javascript 如何在jQuery中设置永久值

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);

我想用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);
        $('#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()
的代码,如果这些函数是问题的一部分。正如我之前评论中的链接所解释的那样,您的目标应该是提供体现该问题的最小数量的代码。