【发布时间】:2023-03-15 11:55:01
【问题描述】:
首先,我是真正的编程新手,如果我的问题有任何改变,我提前道歉。
我有两个函数,第一个是创建一个 div,将其插入另一个 div 并为其分配一个由 Math.random() 方法生成的随机 ID。第二个是通过 ID 获取这个全新的元素并为其设置样式。
但为了让这个函数正常工作,我需要使用“getElementById()”方法获取这个新 ID。我以为我可以通过 interFrame 函数将它作为参数传递,但它被识别为“null”。
我已经进行了研究并尝试了所有我能想到的,但我找不到客观的答案。
你会在这支笔上看到一个按钮,当你点击它时,会显示一个蓝色块,我希望这个块在按钮被点击后自动下降。
https://codepen.io/WegisSilveira/pen/PMPoaR
var field = document.getElementById("field");
var btn = document.getElementById("btn");
var py;
var dy;
var vel;
function addBlock() {
dy = 0.4;
py = 0;
vel = 0.1;
var ID = Math.round(Math.random()*100000);
var div = document.createElement('div');
div.className = "block";
div.setAttribute('id', ID);
field.appendChild(div);
interFrame(ID);
}
function interFrame(id) {
var block = document.getElementById(id);
tmp = requestAnimationFrame(interFrame);
py += dy + vel;
block.style.top = py + "px";
if (py >= 675) {
cancelAnimationFrame(tmp);
}
}
btn.addEventListener('click', addBlock);
<body>
<div id="field">
<button type="submit" id="btn">TesteAdd</button>
</div>
</body>
【问题讨论】:
-
您能否也发布 HTML 以便他人帮助您。
-
@Nidhin Joseph 我没有任何元素,只有父 div。我在其中插入新的 div 并使用变量 ID 生成 id。使用 devtools 我可以看到它正在工作。我试图将相同的数字作为参数传递的原因实际上是 getElementById 接收相同的 id。我不知道我是否清楚,对此感到抱歉
-
什么是空?
id在帧间或运行 getElementByID 时block的值? -
在您的代码中
field未定义。你是在别处定义它吗?你检查过控制台是否有错误? -
@alberto montalesi 第二个,当我运行 getElementById 时。 interframe 函数中的 id 正在接收值
标签: javascript html css