添加带有 javascript 的超链接到 html 下拉列表 div

Adding hyperlinks with javascript to html drop down div

我正在尝试向此下拉菜单添加更多链接,菜单本身有效,我提供的链接也有效,问题是当我尝试通过 Javascript 添加链接时使用 appendChild 的文件,似乎没有任何事情发生。在其他代码中表单处理也是成功的,唯一错误的是上面描述的。

dropdown.html

<body>
<form id="aform">
  URL:<br>
  <input type="text" name="URL" id="URL">
  <br>
  Bookmark Name:<br>
  <input type="text" name="bookmarkname" id="bookmarkname">
  <br><br>
  <input type="submit" id="formsubmit">
</form> 
<div class="dropdown">
  <button class="dropbtn" id="dropdown">Links</button>
  <div id="myDropdown" class="dropdown-content">
    <a href="https://youtube.com">Youtube</a>
    <a href="https://www.amazon.com">Amazon</a>
    <a href="https://www.yahoo.com">Yahoo</a>
  </div>
</div>
<script src="dropdown.js"></script>

dropdown.js

function retrieveFormData() {
            var URL = document.getElementById("URL").value;
            var Bookmarkname = document.getElementById("bookmarkname").value;
            var y = document.getElementById("myDropdown");
            var aTag = document.createElement('a');
            aTag.appendChild(document.createTextNode(Bookmarkname))
            aTag.href = URL;
            y.appendChild(aTag);
}

所以我尝试向'y'追加新内容,但实际下拉菜单中没有任何反应,没有添加。

这个:

var Bookmarkname = document.getElementById("bookmarkname").value;

...将 Bookmarkname 设置为 #bookmarkname 字符串 值。然后你有这一行:

aTag.appendChild(Bookmarkname);

appendChild 用于附加一个 child DOM Node;它不适用于设置文本,因此您可能会得到一个没有内容的 link。但是,您可以执行 aTag.appendChild(document.createTextNode(Bookmarkname)).

那是因为您使用了提交按钮。提交按钮告诉浏览器将表单的内容发送到服务器端。

您要做的是将提交按钮更改为常规按钮并添加一个 onclick 事件。

<body>
<form id="aform">
  URL:<br>
  <input type="text" name="URL" id="URL">
  <br>
  Bookmark Name:<br>
  <input type="text" name="bookmarkname" id="bookmarkname">
  <br><br>
  <input type="button" id="formsubmit" onclick="retrieveFormData();" value="Submit">
</form> 
<div class="dropdown">
  <button class="dropbtn" id="dropdown">Links</button>
  <div id="myDropdown" class="dropdown-content">
    <a href="https://youtube.com">Youtube</a>
    <a href="https://www.amazon.com">Amazon</a>
    <a href="https://www.yahoo.com">Yahoo</a>
  </div>
</div>
<script src="forminput.js"></script>