2013-05-04 35 views
0

我對JavaScript比較新,並且在更改值時遇到了一些麻煩。Javascript輸入值不能被用戶更改

這裏是我的javascript:

function printResults(results, numMeals){ 
    calories=Math.round(results); 
    protein= Math.round(results/4*.4); 
    carbs=Math.round(results/4*.3); 
    fats=Math.round(results/9*.3); 
    document.getElementById("calories").innerHTML="Total Calories: " + ('<input type="text" id= "totalCal">'); 
    document.getElementById("totalCal").value=calories; 
    document.getElementById("protein").innerHTML="Grams of Protein: " + ('<input type="text" id="totalProtein">'); 
    document.getElementById("totalProtein").value=protein; 
    document.getElementById("carbs").innerHTML="Grams of Carbs: " + ('<input type="text" id="totalCarbs">'); 
    document.getElementById("totalCarbs").value=carbs; 
    document.getElementById("fats").innerHTML="Grams of Fat: " + ('<input type="text" id="totalFats">'); 
    document.getElementById("totalFats").value=fats; 
    calories= Number(document.getElementById("totalCal").value); 
    protein= Number(document.getElementById("totalProtein").value); 
    carbs= Number(document.getElementById("totalCarbs").value); 
    fats= Number(document.getElementById("totalFats").value); 
    document.getElementById("search").innerHTML= ('<a class="btn" href="search/'+calories+'/'+protein+'/'+carbs+'/'+fats+'/'+numMeals+'">Find Meals</a><br>');} 

而且它編輯這些HTML輸入字段:

<div class="span2" style="text-align:left"> 
    <span id="calories"> Total Calories: -</span><br> 
    <span id="protein"> Protein: -</span><br> 
    <span id="carbs"> Carbs: -</span><br> 
    <span id="fats"> Fats: -</span><br> 
    <span id="search"></span><br> 
    </div> 

這適用於但是設置初始值,當我編輯文本字段的值手動,它不會改變提交時的值。例如,如果原來的熱量被設置爲2000基礎上計算,然後我編輯的文本字段2500,我的搜索仍產生2000

+0

當我讀到你的js時,你函數的最後一行設置了一個鏈接「Find meals」,其中包含初始搜索值?那麼鏈接當然不會返回值,如果更改後? – jtheman 2013-05-04 22:45:01

+0

您在搜索innerHTML中的值都取決於printResults函數中的結果變量。你怎麼稱呼那個功能?你需要使用你的文本字段值來調用它。 – 2013-05-04 22:55:54

回答

1

是一個值,而不是改變#searchinnerHtml,將其更改爲<a><button>,處理click事件並獲取事件中的值。否則,您正在生成搜索鏈接的時間早於值被更改,因此它包含舊值。

也沒有理由動態生成輸入,在html中定義它們,並根據需要只更改value

作爲一個方面說明,我真的推薦研究jQuery,因爲它使這些事情更加冗長。