0

我对 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 的值。

4

1 回答 1

1

是的,而不是更改innerHtmlof #search,将其更改为<a>or <button>,处理click事件并获取事件中的值。否则,您会在值更改之前生成搜索链接,因此它包含旧值。

也没有理由动态生成输入,在 html 中定义它们并且只value根据需要进行更改。

作为旁注,我真的建议研究 jQuery,因为它使这些事情变得不那么冗长。

于 2013-05-04T22:47:59.120 回答