gpt4 book ai didi

javascript - 使用 Javascript 动态创建按钮 onload

转载 作者:行者123 更新时间:2023-11-30 20:36:36 26 4
gpt4 key购买 nike

所以我很难理解我在这里做错了什么。

我试图实现的大图是一个带有 iframe 的页面,该页面由按钮控制,按下时会更改 iframe 的源。这些按钮将根据我不知道其大小的数据结构动态创建,这意味着我需要将其实现为一个循环。

到目前为止,我只是添加了一个预填充的对象并尝试将按钮动态创建到 HTML 页面,但我无法创建按钮。

我要运行的代码是

<HEAD>
<TITLE>Testing stuff</TITLE>
</HEAD>
<BODY onload="script();">
<FORM>
<H2>Dynamically add button to form.</H2>

<span id="fooBar">&nbsp;</span>

</FORM>
</BODY>
<script>

var URLobj = {
url1 : "https://www.lipsum.com/",
url2 : "https://www.cnet.com/news/",
url3 : "https://stackoverflow.com/"
};


function add(name, URL) {

//Create an input type dynamically.
var element = document.createElement("BUTTON");

//Assign different attributes to the element.
element.setAttribute("type", "button");
element.setAttribute("value", URL);
element.setAttribute("name", name);

alert(name);
var foo = document.getElementById("foobar");

//Append the element in page (in span).
alert('i can reach here');
foo.appendChild(element);
alert('i can not reach here');
}
window.onload = function iterator()
{

for (var key in URLobj) {
if (URLobj.hasOwnProperty(key)) {
add(key, URLobj[key])
}
}
}
</script>

此外,对于此类问题,这似乎是一种好的方法吗? (尝试动态添加按钮)或者我的下一步是否会证明我当前的方法很棘手(使按钮控制页面中的 iframe)?

最佳答案

这里的主要问题是这一行:

var foo = document.getElementById("foobar");

由于JS是区分大小写的,所以应该是:

var foo = document.getElementById("fooBar");

调试此类内容时请密切注意控制台。这是您应该在原始代码中看到的错误:

Uncaught TypeError: Cannot read property 'appendChild' of null

此外,根据您的使用情况,元素类型应该是input,而不是button。见下文。

var URLobj = {
url1: "https://www.lipsum.com/",
url2: "https://www.cnet.com/news/",
url3: "https://stackoverflow.com/"
};


function add(name, URL) {

//Create an input type dynamically.
var element = document.createElement("input");

//Assign different attributes to the element.
element.setAttribute("type", "button");
element.setAttribute("value", URL);
element.setAttribute("name", name);

var foo = document.getElementById("fooBar");

//Append the element in page (in span).
foo.appendChild(element);
}
window.onload = function iterator() {

for (var key in URLobj) {
if (URLobj.hasOwnProperty(key)) {
add(key, URLobj[key])
}
}
}
<HEAD>
<TITLE>Testing stuff</TITLE>
</HEAD>

<BODY onload="script();">
<FORM>
<H2>Dynamically add button to form.</H2>

<span id="fooBar">&nbsp;</span>

</FORM>
</BODY>

关于javascript - 使用 Javascript 动态创建按钮 onload,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49772522/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com