※ ChatGPTを利用し、要約された質問です(原文:setTimeoutでelementを渡す方法)
setTimeoutでelementを渡す方法
このQ&Aのポイント
setTimeoutの引数にdocument.getElementByIdの情報を格納して他の関数に渡すことはできないのでしょうか?
setTimeoutでは渡された要素に対してタグ名などのプロパティを使うことができません。
普通に渡す場合はちゃんと使えるのに、setTimeoutではなぜプロパティが表示されないのか疑問です。
setTimeoutの引数にdocument.getElementByIdの情報を格納して
他の関数に渡すことはできないのでしょうか?
下記は自分で調べた内容ですが、aaa()で変数mにdocument.getElementByIdを格納して
setTimeoutの引数にその変数を指定してbbb()に渡しましたが使うことができませんでした。
[object HTMLDivElement]は渡っているようですが、tagNameでDIVが表示されません。
ccc()のように普通に渡した場合はちゃんと使えました。
データはちゃんと送られているのに、setTimeoutではなぜtagNameなどで表示されないのでしょうか。
<html lang="ja">
<head>
<title>サンプル</title>
<script>
function aaa() {
var m = document.getElementById("xxx");
alert(m); //[object HTMLDivElement]
alert(m.tagName); //DIV
var p = 777;
setTimeout("bbb('"+m+"',"+p+")",1000);
ccc(m,p);
}
function bbb(m,p){
alert(m); //[object HTMLDivElement]
alert(m.tagName); //undefined
alert(p); //777
}
function ccc(m,p){
alert(m); //[object HTMLDivElement]
alert(m.tagName); //DIV
alert(p); //777
}
</script>
</head>
<body onload="aaa()">
<div id="xxx">サンプル</div>
</body>
</html>
お礼
解決しました。ありがとうございました。