出力欄:
名前を入力すると出力欄にあいさつが出力されます。この部分は次のようになっています。
<p><label for="input">お名前:</label> <input id="input" onchange="foo();"></p> <p id="output">出力欄:</p>
ここで呼び出している関数 foo() は次のように定義することが考えられます:
function foo() {
var x = document.getElementById("input").value;
document.getElementById("output").innerHTML = 'こんにちは,' + x + 'さん!';
}
しかしこれではHTMLタグがそのまま出力されてしまいます。innerHTML
の代わりに innerText というのもありますが,こちらは IE と Opera でしか対応していません。
プロンプト のところで使った htmlentities()
のような自前の関数を定義して使うといいでしょう。
もう一つの方法は次のようにすることです:
function foo() {
var x = document.getElementById("input").value;
var t = document.createTextNode('こんにちは,' + x + 'さん!');
document.getElementById("output").appendChild(t);
}
もっとも,これでは何度も名前を入れると出力が何度もされてしまいます。たぶん次のようにするのがいいでしょう:
function foo() {
var x = document.getElementById("input").value;
var t = document.createTextNode('こんにちは,' + x + 'さん!');
var u = document.getElementById("output");
u.replaceChild(t, u.childNodes[0]);
}
Last modified: 2012-04-18 10:05:44