Dojo-don';不要重复你自己
在dojo中有没有一种更简单的方法来编写类似这样的内容(而不是为我想要显示或隐藏的每件事情都提供一个函数)?我知道一定有办法避免这种重复,但我不知道怎么做Dojo-don';不要重复你自己,dojo,hide,slideshow,show,dry,Dojo,Hide,Slideshow,Show,Dry,在dojo中有没有一种更简单的方法来编写类似这样的内容(而不是为我想要显示或隐藏的每件事情都提供一个函数)?我知道一定有办法避免这种重复,但我不知道怎么做 on(dom.byId("thing_toggle2"), "click", function(){ if(thing_list2.style.display == "none") { thing_list2.style.display = "block"; dom.byId("toggle2_sign
on(dom.byId("thing_toggle2"), "click", function(){
if(thing_list2.style.display == "none") {
thing_list2.style.display = "block";
dom.byId("toggle2_sign").innerHTML = "(-)";
} else {
thing_list2.style.display = "none";
dom.byId("toggle2_sign").innerHTML = "(+)";
};
});
on(dom.byId("thing_toggle3"), "click", function(){
if(thing_list3.style.display == "none") {
thing_list3.style.display = "block";
dom.byId("toggle3_sign").innerHTML = "(-)";
} else {
thing_list3.style.display = "none";
dom.byId("toggle3_sign").innerHTML = "(+)";
};
});
我没有测试这个,但它应该给你一个起点。添加一个额外的部分,只需要添加到数据数组中
var fnToggle = function(nodeMap) {
var expand = domStyle.get(dom.byId(nodeMap.contentNode), 'display') == 'none';
domStyle.set(dom.byId(nodeMap.contentNode), 'display', expand ? 'block' : '');
html.set(dom.byId(nodeMap.expandoNode), expand ? '+' : '-');
};
var nodes = [
{ eventNode: 'thing_toggle2', contentNode: thing_list2, expandoNode: 'toggle2_sign' },
{ eventNode: 'thing_toggle3', contentNode: thing_list3, expandoNode: 'toggle3_sign' }
];
array.forEach(nodes, function(nodeMap) {
on(dom.byId(nodeMap.eventNode), "click", function(){ fnToggle(nodeMap); });
});
// domStyle -> dojo/dom-style
// html -> dojo/html
// array -> dojo/_base/array
您可以使用whichuse和我实际上决定将其作为一个简单的老javascript函数,我可以在其他地方重用,包括可能不需要dojo的页面。大概是这样的:
<a href="#" onclick="javascript:showlayer('myName');return false;">[1]</a>
<a href="#" onclick="javascript:showlayer('anothername');return false;">[2]</a>
<div id="myName" style="display:none;">Antonio</div>
<div id="anothername" style="display:none;">Elliot</div>
<script type="text/javascript">
function showlayer(layer){
var myLayer = document.getElementById(layer).style.display;
if(myLayer=="none"){
document.getElementById(layer).style.display="block";
} else {
document.getElementById(layer).style.display="none";
};
}
</script>
安东尼奥
艾略特
功能显示层(层){
var myLayer=document.getElementById(layer.style.display);
如果(myLayer==“无”){
document.getElementById(layer.style.display=“block”;
}否则{
document.getElementById(layer.style.display=“无”;
};
}
看起来不错,我会将“无”设置为显示的第二个选项展开?“阻止“:”无“
并通过“展开?”-”:“+”翻转+/-运算符实际上,我决定将其作为一个普通的老javascript函数来执行,我可以在其他地方重用它,包括可能不需要dojo的页面。大概是这样的: