2015-10-21 62 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'))