单独显示/隐藏按钮javascript

单独显示/隐藏按钮javascript,javascript,html,Javascript,Html,我尝试使用两个单独的按钮,这样当第一个按钮被点击时,它下面会显示一个div,然后当另一个按钮被按下时,另一个div会弹出,替换/隐藏第一个按钮被点击时出现的第一个div Html: 使用display:none从页面中完全删除元素 函数预定义(){ if(document.getElementById('predetermine').onclick){ document.getElementById('predetermineclick')。style.display='block'; do

我尝试使用两个单独的按钮,这样当第一个按钮被点击时,它下面会显示一个div,然后当另一个按钮被按下时,另一个div会弹出,替换/隐藏第一个按钮被点击时出现的第一个div

Html:


使用
display:none
从页面中完全删除元素

函数预定义(){
if(document.getElementById('predetermine').onclick){
document.getElementById('predetermineclick')。style.display='block';
document.getElementById('auctionclick').style.display='none';
}
}
功能拍卖(){
if(document.getElementById('auction').onclick){
document.getElementById('auctionclick').style.display='block';
document.getElementById('predetermineclick')。style.display='none';
}
}

预先确定
拍卖

输入用户名: 创建链接
使用
display:none
从页面中完全删除元素

函数预定义(){
if(document.getElementById('predetermine').onclick){
document.getElementById('predetermineclick')。style.display='block';
document.getElementById('auctionclick').style.display='none';
}
}
功能拍卖(){
if(document.getElementById('auction').onclick){
document.getElementById('auctionclick').style.display='block';
document.getElementById('predetermineclick')。style.display='none';
}
}

预先确定
拍卖

输入用户名: 创建链接
您可以通过在javascript函数中传递被单击按钮的id来获取该按钮的id。请尝试下面的代码片段

HTML:

另一种方法是传递元素本身,而不是它的id。 要使其工作,请更改
toggleState(this.id)切换到
切换状态(此)
在上述HTML代码的两个位置

然后获取触发元素的id,就像我们在下面的代码中所做的那样

function toggleState(clickedButton) {
    const clickedButtonId = clickedButton.id;

    const predetermineStyle = document.getElementById('predetermineclick').style;
    const auctionStyle = document.getElementById('auctionclick').style;
    
    if(clickedButtonId === 'predetermine') {
        predetermineStyle.visibility = 'visible';
        auctionStyle.visibility = 'hidden';
    } else {
        auctionStyle.visibility = 'visible';
        predetermineStyle.visibility = 'hidden';
    }
}
另外,我注意到您的HTML代码中缺少了一个
元素,我相信您的代码文件中肯定会有这个元素,但是为了使这个答案能够自给自足,我在开头添加了一个
元素


我会选择删除元素而不是切换其可见性,但我看到@Janned在他的回答中已经提到了这一点,所以我不会深入讨论它。

您可以通过在javascript函数中传递它来获得单击按钮的id。请尝试下面的代码片段

HTML:

另一种方法是传递元素本身,而不是它的id。 要使其工作,请更改
toggleState(this.id)切换到
切换状态(此)
在上述HTML代码的两个位置

然后获取触发元素的id,就像我们在下面的代码中所做的那样

function toggleState(clickedButton) {
    const clickedButtonId = clickedButton.id;

    const predetermineStyle = document.getElementById('predetermineclick').style;
    const auctionStyle = document.getElementById('auctionclick').style;
    
    if(clickedButtonId === 'predetermine') {
        predetermineStyle.visibility = 'visible';
        auctionStyle.visibility = 'hidden';
    } else {
        auctionStyle.visibility = 'visible';
        predetermineStyle.visibility = 'hidden';
    }
}
另外,我注意到您的HTML代码中缺少了一个
元素,我相信您的代码文件中肯定会有这个元素,但是为了使这个答案能够自给自足,我在开头添加了一个
元素


我会选择删除元素而不是切换其可见性,但我看到@Janned在他的回答中已经解决了这一点,所以我不会深入讨论。

可见性:隐藏只会在视觉上隐藏元素,但它仍在流中。使用
display:none
将其隐藏并从流中删除。(参见)这是否回答了您的问题?只是一个建议,不要使用内联样式,因为它会使代码的可读性和维护变得一团糟,并且在css中使用速记规则,例如
border radius:20px 13px而不是
边框右上角半径:13px;边框左下半径:13px;边框右下半径:20px;边框左上半径:20px
可见性:隐藏的
只是直观地隐藏元素,但它仍在流中。使用
display:none
将其隐藏并从流中删除。(参见)这是否回答了您的问题?只是一个建议,不要使用内联样式,因为它会使代码的可读性和维护变得一团糟,并且在css中使用速记规则,例如
border radius:20px 13px而不是
边框右上角半径:13px;边框左下半径:13px;边框右下半径:20px;边框左上半径:20px非常感谢您解决了这个问题!很抱歉反应太晚,但我感谢您的解决方案!非常感谢您解决了这个问题!很抱歉反应太晚,但我感谢您的解决方案!
<div>
    <!-- Pre-Determined Button -->
    <span class="tooltip">
        <button
            style="border-top-right-radius: 13px; border-bottom-left-radius: 13px;border-bottom-right-radius: 20px;border-top-left-radius: 20px;" id="predetermine" onclick="toggleState(this.id);">Pre-Determined</button>
    </span>

    <!-- Auction Button -->
    <span class="tooltip">
        <button
            style="border-top-right-radius: 20px; border-bottom-left-radius: 20px;border-bottom-right-radius: 13px;border-top-left-radius: 13px;" id="auction" onclick="toggleState(this.id); ">Auction</button>
    </span>

</div>
<br>

<!-- Username Entry -->
<div class="username-entry" id="predetermineclick" style="visibility:hidden">
    <label> Enter Username: </label>
    <input class="joe" type="text" id="uName" name="UserName">
</div>

<!-- Create code button -->
<div class="create" id="auctionclick" style="visibility:hidden">
    <button class="button">Create Link</button>
</div>
function toggleState(clickedButtonId) {
    const predetermineClick = document.getElementById('predetermineclick');
    const auctionClick = document.getElementById('auctionclick');
    
    if(clickedButtonId === 'predetermine') {
        predetermineClick.style.visibility='visible';
        auctionClick.style.visibility='hidden';
    } else {
        auctionClick.style.visibility='visible';
        predetermineClick.style.visibility='hidden';
    }
}
function toggleState(clickedButton) {
    const clickedButtonId = clickedButton.id;

    const predetermineStyle = document.getElementById('predetermineclick').style;
    const auctionStyle = document.getElementById('auctionclick').style;
    
    if(clickedButtonId === 'predetermine') {
        predetermineStyle.visibility = 'visible';
        auctionStyle.visibility = 'hidden';
    } else {
        auctionStyle.visibility = 'visible';
        predetermineStyle.visibility = 'hidden';
    }
}