我正在学习使用JavaScript,我正在尝试使用函数中的值创建脚本中的HTML表:
<!DOCTYPE html>
<head>
<meta charset="utf-8">
<script type="text/javascript">
function nextStep(xn, a) {
var xn1 = (xn+(a/xn)/2);
return xn1;
}
function getError(xn, a) {
var err = xn-(a/xn);
return err;
}
function newtonRoot(x) {
if(x>0) {
var a = 2;
var error = getError(x, a);
var zeilen = 0;
var x_werte = [];
var errors = [];
while(error>0.0001) {
x = nextStep(x, a);
error = getError(x, a);
zeilen++;
x_werte[zeilen] = x;
errors[zeilen] = error;
}
var ergebnis = x;
const GLOBAL_ERROR = error;
document.body.appendChild(document.createTextNode("<table border=" + "1" + ">"));
document.body.appendChild(document.createTextNode("<tr><td>Schritt</td><td>Startwert" + a + "</td><td>Fehler</td></tr>"));
for(var i=1;i<zeilen+1;i++) {
document.body.appendChild(document.createTextNode("<tr>"));
document.body.appendChild(document.createTextNode("<td>i</td>")));
document.body.appendChild(document.createTextNode("<td>" + x_werte[i] + "</td>"));
document.body.appendChild(document.createTextNode("<td>" + errors[i] + "</td>"));
document.body.appendChild(document.createTextNode("</tr>)));
}
document.body.appendChild(document.createTextNode("</table>"));
document.body.appendChild(document.createTextNode("Ergebnis: Wurzel von" + a + "ist" + ergbenis + "(approximiert)"));
}
}
newtonRoot(1);
</script>
</head>
<body>
</body>
</html>
但似乎不起作用?
我尝试使用http://www.jslint.com/验证它,但有很多小东西被标记为错误并且摆脱它们给我带来了错误:
“预期'(结束)'而是看到&lt;!DOCTYPE html&gt;”
这似乎是一个错误。
另一个网站实际上没有发现错误,所以我在这里做错了什么?
我甚至使用了这个appendChild而不是write,因为据我所知,write只能在pageload上使用。
编辑:好吧也许我没有明确初步目标:
我想用HTML创建一个表,但不是将代码写入正文,而是让脚本用for循环编写它。
答案 0 :(得分:1)
这是清理过的代码:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<script type="text/javascript">
function nextStep(xn, a) {
var xn1 = (xn + (a / xn) / 2);
return xn1;
}
function getError(xn, a) {
var err = xn - (a / xn);
return err;
}
function newtonRoot(x) {
if (x > 0) {
var a = 2;
var error = getError(x, a);
var zeilen = 5;
var x_werte = [];
var errors = [];
while (error > 0.0001) {
x = nextStep(x, a);
error = getError(x, a);
zeilen++;
x_werte[zeilen] = x;
errors[zeilen] = error;
}
var ergebnis = x;
var GLOBAL_ERROR = error;
var table = document.body.appendChild(document.createElement("table"));
table.setAttribute('border', '1');
var hrow = document.createElement('tr');
var td1 = document.createElement('td'); td1.appendChild(document.createTextNode("Schritt"));
var td2 = document.createElement('td'); td2.appendChild(document.createTextNode("Startwert " + a));
var td3 = document.createElement('td'); td3.appendChild(document.createTextNode("Fehler"));
hrow.appendChild(td1); hrow.appendChild(td2); hrow.appendChild(td3);
table.appendChild(hrow);
for (var i = 1; i < zeilen + 1; i++) {
var row = document.createElement('tr');
var td_i = document.createElement('td'); td_i.appendChild(document.createTextNode(i));
var td_x_werte = document.createElement('td'); td_x_werte.appendChild(document.createTextNode(x_werte[i]));
var td_errors = document.createElement('td'); td_errors.appendChild(document.createTextNode(errors[i]));
row.appendChild(td_i); row.appendChild(td_x_werte); row.appendChild(td_errors);
table.appendChild(row);
}
document.body.appendChild(document.createTextNode("Ergebnis: Wurzel von " + a + " ist " + ergebnis + " (approximiert)"));
}
}
newtonRoot(1);
</script>
</body>
</html>
答案 1 :(得分:0)
错误:
if(x>0 {
必须是
if(x > 0) {
答案 2 :(得分:0)
此代码中存在许多错误。我想我有working in a fiddle,但我不确定最终目标是什么。 JSHint显示了多个小错误,你应该修复它们而不是把它们写成不相关的。
以下是我的修正:
function nextStep(xn, a) {
var xn1 = (xn+(a/xn)/2);
return xn1;
}
function getError(xn, a) {
var err = xn-(a/xn);
return err;
}
function newtonRoot(x) {
if(x>0) {
var a = 2;
var error = getError(x, a);
var zeilen = 0;
var x_werte = [];
var errors = [];
while(error>0.0001) {
x = nextStep(x, a);
error = getError(x, a);
zeilen++;
x_werte[zeilen] = x;
errors[zeilen] = error;
}
var ergebnis = x;
var GLOBAL_ERROR = error;
document.body.appendChild(document.createTextNode("<table border=" + "1" + ">"));
document.body.appendChild(document.createTextNode("<tr><td>Schritt</td><td>Startwert" + a + "</td><td>Fehler</td></tr>"));
for(var i=1;i<zeilen+1;i++) {
document.body.appendChild(document.createTextNode("<tr>"));
document.body.appendChild(document.createTextNode("<td>i</td>"));
document.body.appendChild(document.createTextNode("<td>" + x_werte[i] + "</td>"));
document.body.appendChild(document.createTextNode("<td>" + errors[i] + "</td>"));
document.body.appendChild(document.createTextNode("</tr>"));
}
document.body.appendChild(document.createTextNode("</table>"));
document.body.appendChild(document.createTextNode("Ergebnis: Wurzel von" + a + "ist" + ergbenis + "(approximiert)"));
}
}
newtonRoot(1);
答案 3 :(得分:0)
您在第42行中缺少"
document.body.appendChild(document.createTextNode("</tr>)));
应该是
document.body.appendChild(document.createTextNode("</tr>")));
也许会那样。