[英]modified html element nested in div using javascript
我正在尝试更改嵌套在一组div中的UL的样式。
这是我所拥有的:
HTML:
<div class='mainCat' id='List' onclick="Expand(this.id);">List</div>
<div class='subCat'>
<ul>
<li>List item one</li>
<li>List item two</li>
<li>List item three</li>
</ul>
</div>
</div>
和Javascript:
function Expand(set)
{
var whichSet = document.getElementById(set);
whichSet.getElementsByTagName('ul')[0].style.display = 'block';
}
和CSS:
.subCat ul
{
display:none;
}
任何帮助深表感谢。 我想从错误中学习,对我正在做错的事情(而不只是答案)做出的解释将非常有帮助。 提前致谢。
我已经根据您的情况创建了一个可工作的JSFiddle 。
您的DOM结构不正确。 您在List
元素之前有一个div结束标签。 您应该删除它。
此外,我不会使用内联事件,因为这是一种不好的做法。 我将其移至addEventListener
函数,该函数可拆分Javascript事件的更好DOM结构
因此,您的代码变为:
<div class='mainCat' id='List'>
List
<div class='subCat'>
<ul>
<li>List item one</li>
<li>List item two</li>
<li>List item three</li>
</ul>
</div>
</div>
并将以下内容添加到您的Javascript中:
document.getElementById("List").addEventListener("click", function(e) {
Expand(this.id);
}, true);
那应该可以了。
您正在“ set”元素内使用getElementsByTagName
,但这是mainCat
div,而不是subCat
div。 ul
不是该div的子级。
另外,您不需要this.id
部分。
我更改了代码,所以subCat代替了id。 (也许您打算让subCat
是mainCat
?如果是这种情况,在List
一词旁边会有一个</div>
)
这是一个固定的示例: http : //jsfiddle.net/4ndEf/
JS:
function Expand(set) {
var whichSet = document.getElementById(set);
whichSet.getElementsByTagName('ul')[0].style.display = 'block';
}
HTML:
<div class='mainCat' id='List' onclick="Expand('subCat');">List</div>
<div id='subCat'>
<ul>
<li>List item one</li>
<li>List item two</li>
<li>List item three</li>
</ul>
</div>
CSS:
#subCat ul {
display:none;
}
正如克里斯和乔纳森·皮蒂科拉斯所说。
但是您也可以使用jQuery简化它
$("#list").click(function(){
$('ul').css('display', 'block');
});
我将此CSS设置在列表上,以便用户可以看到它是可单击的
#list {
cursor: pointer;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.