谁能帮我解决这个问题。
我试图通过使用 document.getElementById("XXXout").innerHTML=XXX
来填充表格来输出元素的结果,但是返回的值是 NaN
(如下图所示)。我尝试了几个小时来解决这个问题,但我仍然停留在这个问题上。请帮助我!
var porfolio = function() {
var ExpectReturnofStock = $("#ExpectReturnofStockin").val();
var StdStock = $("#StdStockin").val();
var StdBond = $("#StdBondin").val();
var ExpectReturnofBond = $("#ExpectReturnofBondin").val();
var CorreSB = $("#CorreSBin").val();
var rf = $("#rfin").val();
var WB = $("#WBin").val();
var wss = 1 - WB;
WS = parseFloat(wss);
var ExpectReturnofPorfolio = (WB * ExpectReturnofBond + WS * ExpectReturnofStock).toFixed(2);
var StdPorfolio = (Math.pow((Math.pow(WS * StdStock, 2) + Math.pow(WB * StdBond, 2) + 2 * WS * StdStock * WB * StdBond * CorreSB), 1 / 2)).toFixed(2);
var sp = ((ExpectReturnofPorfolio - rf) / StdPorfolio).toFixed(2);
document.getElementById("WSout").innerHTML = WS;
document.getElementById("ExpectReturnofPorfolioout").innerHTML = ExpectReturnofPorfolio;
document.getElementById("StdPorfolioout").innerHTML = StdPorfolio;
document.getElementById("spout").innerHTML = sp;
};
<!DOCTYPE html>
<html>
<head>
<!-- Bootstrap Core CSS -->
<link href="css/bootstrap.min.css" rel="stylesheet">
<!-- Custom CSS -->
</head>
<body>
<p>Exchange Rates</P>
<div class='comment-input'>
<table border="1">
<tr>
<th>Stock Fund:</th>
<td>Expect Return:</td>
<td>
<input type="number" id="ExpectReturnofStockin" size="12" value="">
</td>
<td>Standard Deviation:</td>
<td>
<input type="number" id="StdStockin" size="12" value="">
</td>
</tr>
<tr>
<th>Bond Fund:</th>
<td>Expect Return:</td>
<td>
<input type="number" id="ExpectReturnofBondin" size="12" value="">
</td>
<td>Standard Deviation:</td>
<td>
<input type="number" id="StdBondin" size="12" value="">
</td>
</tr>
<tr>
<th></th>
<td>Correlation:</td>
<td>
<input type="number" id="CorreSBin" size="12" value="">
</td>
<td>Risk Free Rate:</td>
<td>
<input type="number" id="rfin" size="12" value="">
</td>
</tr>
</table>
</div>
</br>
</br>
<div class='comment-output'>
<table border="1">
<tr>
<th>Porfolio</th>
<th>Weight Stock</th>
<th>Weight Bond</th>
<th>Expect Return</th>
<th>Standard Deviation</th>
<th>Sharpe</th>
</tr>
<tr>
<td>1</td>
<td id="WSout" size="auto"></td>
<td>
<input type="text" id="WBin" size="auto">
</td>
<td id="ExpectReturnofPorfolioout" size="auto"></td>
<td id="StdPorfolioout" size="auto"></td>
<td id="spout" size="auto"></td>
</tr>
</table>
</div>
<input type="button" value="Count Words" onclick="porfolio();">
<p class='WSout'></p>
<!-- jQuery -->
<script src="http://code.jquery.com/jquery-2.0.3.min.js"></script>
<script src="../Fin380Html/fin380.js"></script>
</body>
</html>
最佳答案
在不重写所有代码的情况下.. 你在这里有很多问题,因为你在对字符串进行数学运算。
任何时候你使用 val()
或 toFixed()
你都会得到一个字符串。你不能在字符串上做数学......它只是行不通。看下面的例子
$("#test").click(function(){
var num1 = $('#number1').val();
var num2 = $('#number2').val();
// we'll get "12" instead of 3
alert(num1 + num2);
// we convert the text into actual numbers here
num1 = parseFloat(num1);
num2 = parseFloat(num2);
// now since we're dealing with numbers.. we'll get 3
alert(num1 + num2);
});
<input id="number1" value="1" />
<input id="number2" value="2" />
<input type='button' id="test" value="test!" />
这里有一个 fiddle ,你可以试试 https://jsfiddle.net/svaq90t3/
关于Javascript 输出 - NaN 消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35143271/