カヅサツさん早速の返信ありがとうございます。いわれたとおり引数をテキストノードに変換してからリプレイスしてみたのですが、うまくいきませんでした。先ほど僕が提示したスクリプトですが実は凄く簡略化したものになっていて、本当はspan id のresultのところにphpの変数が入っています。先ほどはこの変数は関係ないと思って簡略化したのですが問題が解決できなかったため、phpのスクリプト部も一応簡単に書かせていただきます。申し訳ありませんでした。<?php
$php = "result";//この変数は本来動的に動くようにしていますがここでは関係ないので定数を代入します。
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html lang="ja" dir="ltr">
<head>
<title>父さんのめがね、冷蔵庫にはいってたよ</title>
<script type="text/javascript">
function java(value){
var text = document.createTextNode(value);
var result = document.getElementById(value);
result.replaceChild(text,result.firstChild);
}
</script>
</head>
<body>
<p><span onclick="java(<?=$php?>);">これはHTMLのコードです。</span>
<span id="<?=$php?>">ここにファンクションjavaで処理した値を表示</span></p>
</body>
</html>先ほどと違うところは、java関数の引数にもspan idのresultだったとこにも同じphpの変数$phpを代入するため、
document.getElementById()の()の中もjava関数の引数であるvalueが入るところです。
結果にはresultと表示されてほしいわけです。
また先ほどinnerHTMLを使った例を挙げましたが、innerHTMLを使ってこの関数を動かすこともできますでしょうか?自分にとってはそっちのほうがわかりやすいのでお願いします。
関数の引数に渡した値をテキストノードに変換しなきゃいけないということはわかったのですが、それが原因で[object]
と表示されるのでしょうか?
またjavaとjavascriptを混同したような関数名を付けた件は申し訳ありません。楽をしてしまいました(^^:)
下はinnerHTMLでやろうとしていたコードです。
<?php
$php = "result";//この変数は本来動的に動くようにしていますがここでは関係ないので定数を代入します。
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html lang="ja" dir="ltr">
<head>
<title>父さんのめがね、冷蔵庫にはいってたよ</title>
<script type="text/javascript">
function java(value){
$(value).innerHTML = value;
}
</script>
</head>
<body>
<p><span onclick="java(<?=$php?>);">これはHTMLのコードです。</span>
<span id="<?=$php?>">ここにファンクションjavaで処理した値を表示</span></p>
</body>
</html>
<span id="<?=$php?>"></span>に[object]と結果が表示されるので変数$php = result;の引数valueの受け渡しはうまく言っているはずですが、それをinnerHTMLで出力するときに"result"ではなく"[object]"という文字列になってしまいます。またfirefoxでエラーチェックをすると"result is not defined"というエラーコメントになっています。resultと値が渡っている時点で定義されていると思いますが、何に対して未定義といわれているのかが良くわかりません。
どうかお願いします。