![](/img/trans.png)
[英]Populate the HTML form fields from mysql database on selecting dropdown option
[英]When selecting navbar option it disappears from the dropdown HTML JS
我想我做错了什么,但无法真正弄清楚是什么。
我有一个简单的导航下拉菜单到 select 特定年份。 当我点击我想要的年份时,它应该用数字替换 label 年份。
<div class="dropdown">
<button onclick="myFunction()" class="dropbtn">Year</button>
<div id="myDropdown" class="dropdown-content">
<a onclick="tiptip(this)">2000</a>
<a href="">2001</a>
<a href="">2002</a>
</div>
</div>
<script>
function tiptip(e) {
$('.dropbtn').html(e);
}
</script>
现在这就是我所拥有的。 选择时,例如 2000,我希望按钮内的文本从“年”变为“2000”。 我能够做到这一点,但是选项“2000”似乎从下拉列表中消失了。
有谁知道我做错了什么?
将“a”标签更改为“按钮”
而是将“this”传递给您的 function 并将此 function 粘贴到您的脚本中
function tiptip(year){
let btn = document.querySelector(".dropbtn")
btn.innerText = year
}
就这样
在最初的问题中,您说您有一个drop down ,但我在您的代码中看不到任何下拉列表。 因此,我将提出两种解决方案,一种基于您的代码,其中包含div HTML 元素并稍作调整,另一种具有实际下拉菜单 HTML select 元素。 您将能够选择最适合您需求的一种。 我还将向您指出每个解决方案的简短/一个衬里版本。
单击每个代码片段下方的蓝色按钮运行代码片段,以实际查看每个代码片段的运行情况。
要实际查看一个班轮版本,您只需:
function changeYear(event) { let tgtEl = document.getElementById("myBtnId"); let srcEl = event.target; tgtEl.innerHTML = srcEl.innerHTML; // The one liner version (remove or comment the 3 rows above and de-comment the following one): // document.getElementById("myBtnId").innerHTML = event.target.innerHTML; }
<div class="dropdown"> <button id="myBtnId" onclick="myFunction()" class="dropbtn">Year</button> <div id="myDropdown" class="dropdown-content" onclick="changeYear(event);"> <a href="javascript:void(0);">2000</a> | <a href="javascript:void(0);">2001</a> | <a href="javascript:void(0);">2002</a> | <a href="javascript:void(0);">2003</a> </div>
function changeYear(event) { let tgtEl = document.getElementById("myBtnId"); let srcEl = event.target; tgtEl.innerHTML = srcEl.value; // The one liner version (remove or comment the 3 rows above and de-comment the following one): // document.getElementById("myBtnId").innerHTML = event.target.value; }
<div class="dropdown"> <button id="myBtnId" onclick="myFunction()" class="dropbtn">Year</button> <select id="myDropdown" class="dropdown-content" onchange="changeYear(event);"> <option>2000</option> <option>2001</option> <option>2002</option> <option>2003</option> </select> </div>
它是如何工作的:基本上,function changeYear(event)获取包含年份的源元素并提取其内容(innerHTML 或值取决于或有需要)并将此类内容注入目标元素,即按钮 innerHTML。
另请注意,如果您希望使用标签代替标签,您必须修改代码如下:在第一种情况下使用div和 HTML 元素的组合,该部分
tgtEl.innerHTML = srcEl.value;
变成
tgtEl.value = srcEl.value;
或者
在第二种情况下,使用select HTML 元素,该部分
tgtEl.innerHTML = srcEl.value;
变成
tgtEl.value = srcEl.value;
而一个班轮版本将是:
在第一种情况下(使用div+a ):
document.getElementById("myBtnId").value = event.target.innerHTML;
在第二种情况下(使用select ):
document.getElementById("myBtnId").value = event.target.value;
另请注意,从 HTML 部分
<a href="javascript:void(0);">200N</a> |
您可以删除代码javascript:void(0); 使 HTML 代码更清晰,更易于维护。 通过这样做,当您单击其中一个a元素时,页面将 go 到 href="" 值,该值将是一个空字符串。 为了防止这种不需要的行为,您可以在 function 中添加一行:
function changeYear(event)
{
event.preventDefault(); // the row to add to be able remove the code javascript:void(0); from the HTML code
// here you will keep the rest of the statements as in the original code
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.