2015-11-01 31 views
0

我目前正在製作一個簡單的基於web的計算器的過程。我無法將我的按鈕的值分配到「屏幕」區域,我想要顯示剛剛按下的數字的值。我可以將值變成一個javascript變量,但是當我嘗試將它寫入屏幕區域時,它總是以未定義的形式出現。使用jquery根據變量寫div的html

這裏是我的代碼:

$(".numbers").click(function(){ 
    currentValue = ($(this).val()); 
    $("#screen").html(function(){ 
     return "<p> " + currentValue.toString() + "</p>"; 
    }) 
    }); 

這個問題似乎是代碼得到運行兩次,但只有當我有它設置爲返回這個(如果我用回「測試」它完美)。

+1

嘗試'$( 「#屏」)HTML(函數(){ 回報 「

」 + currentValue.toString()+ 「

」; }())。'我猜測匿名函數需要執行才能返回所需的字符串! – Rayon

+0

or this:'$(「#screen」)。html(「

」+ currentValue +「

」);'(當你將數字連接到字符串時或者使用'.html() )。 – blex

+0

@blex,是的..有沒有一個匿名函數作爲參數.. – Rayon

回答

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

每次按下一個號碼時,它把它添加到當前串數字的末尾,inste覆蓋一切的廣告。

-1

看起來像你的代碼工作,告訴我們你的HTML。

$(".numbers").on("click", function(){ 
 
    currentValue = $(this).val(); 
 
    $("#screen").html("<p> " + currentValue + "</p>"); 
 
});
<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>

+0

使用代碼片段編輯器在這裏發佈,而不是試圖欺騙鏈接無代碼到JSFiddle。 – mplungjan