【发布时间】:2014-06-03 19:29:03
【问题描述】:
所以我查看了其他问题,并找到了在此链接上选择的答案:
Toggle (show/hide) element with javascript
以下是用于更改显示的答案的以下功能。
function toggle(id) {
var element = document.getElementById(id);
if (element) {
var display = element.style.display;
if (display == "none") {
element.style.display = "block";
} else {
element.style.display = "none";
}
}
}
我在我的代码中尝试过,但它不起作用。我在末尾或这篇文章中附上了 JSFiddle 的链接。
我有一个父 div,其 id 为#activities。它包含多个孩子,但重要的是 li、p 和 div,它们的 id 为#suggestion_input。下面是 HTML。
HTML
<div id="activities" class="info_container">
<h1>Our Activities</h1>
<div class="contain">
<ul>
<li>Activity 1</li>
<li>Activity 2</li>
<li>Activity 3 </li>
<li>Activity 4 </li>
<li>Activity 5</li>
<li>Activity 6 </li>
<li>Activity 7</li>
<li>Your Suggestions</li>
</ul>
<p>
Bacon ipsum dolor sit amet ribeye tenderloin meatball, chuck andouille beef ribs jerky ...
</p>
<div id="suggestion_input">
<label for="name" >Your Name</label>
<input type="text" id="name" name="name">
<label for="email">Email</label>
<input type="email" id="email" name="email">
<label for="suggestions">Suggestions</label>
<textarea id="suggestions" name="suggestions" rows="39"></textarea>
</div>
当用户单击 ul 中名为“Your Suggestions”的最后一个 li 时,p 将显示设置为无,#suggestion_input 将显示内联块。目前,他们的 css 分别设置为 inline-block 和 none。
CSS
#activities p{
display:inline-block;
width:500px;
vertical-align:top;
margin-top:20px;
margin-left:20px;
background:#FFFDA1;
}
#suggestion_input{
display:none;
margin-left:150px;
vertical-align:top;
margin-top:20px;
text-align:center;
}
然后这是我的 javascript,我认为它反映了链接中的答案,只是它不是一个函数。
Javascript - 此代码是 addEventListener 的一部分。事件是“点击”。
if(e.target.innerText === 'Your Suggestions'){
var para = document.getElementById('activities').querySelector('p');
var display = para.style.display;
/* if you uncomment this, then the following code will work
outside of the if display == 'inline-block' condition
para.style.display = 'none';
suggestion_input.style.display = 'inline-block';
*/
if(display == 'inline-block'){
// This code will not work
para.style.display = 'none';
suggestion_input.style.display = 'inline-block';
console.log('works');
}
}else{
if(display == 'none'){
display = "inline-block";
}
}
}
当我点击时,什么也没有发生。是不是因为"display == 'none'"的if语句中的条件导致的错误?
这里是 JSfiddle:http://jsfiddle.net/a4t7w/1/
【问题讨论】:
-
console.log(display) 在 if 之前可以给你(和我们)一个线索。顺便提一句。我没有在 html 中找到任何带有“您的建议”的目标...也发布该部分。
-
我截取了屏幕截图,但要添加图像,它似乎需要在服务器或网站上,以便我可以通过 url 引用它。我正在使用 chrome,结果只返回了对 js 文档的引用。所以像这样的东西 --> whitespace js playpen.js:27 --- 27 是我放置 console.log(display) 的行
标签: javascript html css