function promptuj() {
this.x = prompt("How big should be your multiplication table?");
document.getElementById("keks").innerHTML = tabliczka(this.x);
}
function tabliczka() {
document.getElementById("keks").innerHTML += "<table border=\"1\">";
for (i = 1; i <= this.x; i++) {
document.getElementById("keks").innerHTML += "<tr><td>" + i + "</td>";
for (j = 1; j <= this.x; j++) {
if (j != 1) {
document.getElementById("keks").innerHTML += "<td>" + j * i + "</td>";
}
}
document.getElementById("keks").innerHTML += "</tr>";
}
document.getElementById("keks").innerHTML += "</table>";
}
<!DOCTYPE html>
<html>
<head>
<title>Demo</title>
<meta charset="utf-8">
</head>
<body>
<input type="button" onclick="promptuj()" value="Promptonto" />
<div id="keks"></div>
</html>
이 짧은 거시기 프롬프트 버튼으로 구구단을위한 정의되지 않은 얻을했습니다 수 있습니다. 그러나 임의의 숫자를 지정하면 테이블 대신 정의되지 않은 값이 반환됩니다. 그 전에는 document.getElementById ("keks") 대신 document.write (무엇이든)를 사용했습니다. innerHTML + = 그리고 그것은 효과가있었습니다.
편집 : <body>
을 닫지 않았지만 도움이되지 않은 것으로 나타났습니다. (이 방법 자바 스크립트의 작품이다) 당신의 tabliczka 기능은 원래 아무것도 반환하지 않기 때문에 당신은 정의되지 않은 본
<script type="text/javascript">
function promptuj() {
window.x=prompt("How big should be your multiplication table?");
document.getElementById("keks").innerHTML = tabliczka(window.x);
}
function tabliczka(x) {
var htmlString = "";
htmlString += "<table border=\"1\">";
for (i=1; i<=window.x; i++) {
htmlString += "<tr><td>" + i + "</td>";
for (j=1; j<= x; j++) {
if (j!=1) {
htmlString += "<td>" + j*i + "</td>";
}
}
htmlString += "</tr>";
}
htmlString += "</table>";
return htmlString;
}
</script>
, 그래서 자바 스크립트는 암시 적으로 그것을 호출에서 정의되지 않은 반환
는'.innerHTML + ='절대 사용하지 마십시오! – Oriol
@Oriol 그럼 대신 무엇을 사용해야합니까? : | – Irevall
@Andrew L. 방금 함수 외부에서 정의 했으므로 중요하지 않습니다. document.write()를 사용할 때 정의하지 않고 작동했습니다. – Irevall