Javascript 似乎没有取消隐藏我的元素

标签 javascript html css

我在 jsfiddle 中编写了以下代码,如果我选中该复选框,则 div Nime 应该是未隐藏的,反之亦然,但它没有发生,我做错了什么?

Code in JSfiddle:
HTML:

<label>Newspaper?</label>
        <input type="checkbox" name="nieu" onclick="change()"><br/><br/>
    <div id="nime">
    <label>How?</label>
        <select name="nime"> 
            <option value="email">Email</option>
            <option value="post">Post</option>
            <option value="beide">Both</option>
        </select>
    </div>

Javascript:

function change(){
    which = document.getElementById('nime');

    if(which.style.display=="block"){
        which.style.display="none";
    }else{
        which.style.display="block";
    }

};

最佳答案

使用the classList API Element.querySelector() API

function change(){
    which.classList.toggle('visibility');// toggle a given class each time we click on the element woth the name nieu
};

var which = document.querySelector('#nime'),// get element with ID=nime
    //which = document.querySelector('[id=nime]'),
    nieu = document.querySelector('[name=nieu]');// get element with name=nime
// add the click event to nieu
nieu.addEventListener("click", change, false)
.visibility{ /*this is our class to hide the element*/
  display: none
}
<label>Newspaper?</label>
        <input type="checkbox" name="nieu"><br/><br/>
    <div id="nime">
    <label>How?</label>
        <select name="nime"> 
            <option value="email">Email</option>
            <option value="post">Post</option>
            <option value="beide">Both</option>
        </select>
    </div>

与加载时的隐藏状态相同,只需添加类 .visibility

function change(){
    which.classList.toggle('visibility');
};

var which = document.querySelector('#nime'),
    nieu = document.querySelector('[name=nieu]');

nieu.addEventListener("click", change, false)
.visibility{
  display: none
}
<label>Newspaper?</label>
<input type="checkbox" name="nieu"><br/><br/>
<div id=nime class=visibility>
  <label>How?</label>
  <select name="nime"> 
    <option value="email">Email</option>
    <option value="post">Post</option>
    <option value="beide">Both</option>
  </select>
</div>

javascript 的替代品

你可以使用 jquery 让你的生活更轻松,但推荐使用 JS

$('[name=nieu]').click(function(){
    $('#nime').toggleClass("visibility")
})
.visibility{
  display: none
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<label>Newspaper?</label>
<input type="checkbox" name="nieu"><br/><br/>
<div id="nime">
  <label>How?</label>
  <select name="nime"> 
    <option value="email">Email</option>
    <option value="post">Post</option>
    <option value="beide">Both</option>
  </select>
</div>

要在加载时隐藏元素,只需将类添加到它即可

$('[name=nieu]').click(function(){
    $('#nime').toggleClass("visibility")
})
.visibility{
  display: none
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<label>Newspaper?</label>
<input type="checkbox" name="nieu"><br/><br/>
<div id="nime" class=visibility><!-- add class visibility-->
  <label>How?</label>
  <select name="nime"> 
    <option value="email">Email</option>
    <option value="post">Post</option>
    <option value="beide">Both</option>
  </select>
</div>

或者如果你不想添加css

Jquery 方法

$('[name=nieu]').click(function(){
    $('#nime').is(":visible") ? $('#nime').hide(): $('#nime').show()
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<label>Newspaper?</label>
<input type="checkbox" name="nieu"><br/><br/>
<div id="nime" class=visibility><!-- add class visibility-->
  <label>How?</label>
  <select name="nime"> 
    <option value="email">Email</option>
    <option value="post">Post</option>
    <option value="beide">Both</option>
  </select>
</div>

javascript 方法

function change(){
    which.style.display == "none"? which.style.display = "block" : which.style.display = "none"
};

var which = document.querySelector('[id=nime]'),
    nieu = document.querySelector('[name=nieu]');
    
nieu.addEventListener("click", change, false)
<label>Newspaper?</label>
<input type="checkbox" name="nieu"><br/><br/>
<div id="nime">
  <label>How?</label>
  <select name="nime"> 
    <option value="email">Email</option>
    <option value="post">Post</option>
    <option value="beide">Both</option>
  </select>
</div>

关于Javascript 似乎没有取消隐藏我的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28839134/

相关文章:

javascript - 页面未链接到 Jquery

javascript - Django 静态文件没有更新

php - Mysql fetch - 带有 HTML 链接的结果指向表 ID

html - Bootstrap 3 - 列的高度为 2 行

javascript - Bootstrap3文件输入

javascript - 如何使用 JS 选择 <li> 标签

javascript - 如何在悬停时加载不同的图像

javascript - 无法将 parseInt 用作 ramdajs 的 ifElse 的 onTrue 或 onFalse 函数

html - 转换的垂直居中无法按预期工作

javascript - 如何在 VS Code 中使用 Libman json 文件?