2015-10-21 47 views
-1

我想用jQuery为div元素设置永久值;如何在jQuery中设置永久值

完整的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; 
} 

完整的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> 

的问题是,当我离开的范围变量被破坏

PS。现在我意识到我的错误是,当在form元素中添加<button>时,每次按下该按钮时,表单中的数据都会被重新设置。

+3

变量'$ big'是绑定在你的码。此外,当您设置元素的文本时,即使原始变量超出范围,该文本仍然保留。你的情况正在发生。 –

+0

如果通过未绑定,你的意思是未声明,我已经在文件的开头声明了它,当.text()方法被设置在这个范围之外时,我会收到一个永久值。 – murloc

+0

看起来像别的东西是你的点击处理程序运行后覆盖div的文本。你可以在[MCVE](http://stackoverflow.com/help/mcve)中重现问题吗? –

回答

2

当您在函数中运行代码时,它会创建一个作用域。您使用var语句定义的每个变量仅在该范围内可用。

要在当前范围之外创建一个变量以用于使用,可以预先声明一个变量,但不要预先输入var或直接写入window.varname = valueHave another read on that topic

此外,在您的代码$('#bigger').text($big); var $big甚至从来没有被定义,所以也许这是问题。

而设置元素文本独立于作用域或变量。

-2

试试这个

来访问:

$("#a").data('value'); 

要设置

$("#a").data('value' , 'whatevervalue'); 

,而无需访问的JQuery:

document.getElementById("a").dataset.value; 

要设置无JQuery的;

document.getElementById("a").setAttribute("value" , "val"); 

然后将其分配到里面的DIV:除非你用

document.getElementById("a").dataset.value = "Some Value"; 

一个DIV不能举行Value属性

$("#myDivElement").html($("#a").data('value'))