永发信息网

javascript怎么实现:链接点第一次显示div,再点隐藏div

答案:1  悬赏:60  手机版
解决时间 2021-03-21 21:27
我自己写了个 test 函数,思路是计数器器 x==0;当为 0 时,点链接时执行打开 div 的 open 函数,同时 把 x = 0 改成等于 1。当 x 不等 0 时,点击链接就执行 close 函数隐藏 div。

但是不知道为什么只能点击出现 div,再点链接后 div 隐藏不了。

不要JQ,谢谢。

<a href="#" id="btn">点我</a>
<div id="mydiv">隐藏的div</div>


function addLoadEvent(func) {
var oldonload = window.onload;
if (typeof window.onload != "function") {
window.onload = func;
}
else {
window.onload = function() {
if (oldonload) {
oldonload();
}
func();
}
}
}


function addEvent(obj,type,handle){
try {
obj.addEventListener(type,handle,false);// Chrome、FireFox、Opera、Safari、IE9+
}
catch(e) {
try {
obj.attachEvent("on" + type,handle);// IE8.0及以下
}
catch(e) {
obj["on" + type] = handle;//更早期浏览器
}
}
}

function test() {
var div = document.getElementById("mydiv");
var btn = document.getElementById("btn");

div.style.display = "none";
var x = 0;
if (x==0){
addEvent(btn,"click",open);
}
else{
addEvent(btn,"click",close);
}

function open() {
div.style.display = "block";
x = 1;
}

function close() {
div.style.display = "none";
x = 0;
}
}

addLoadEvent(test);
我改成这样搞定了,但是我想知道为什么用 x 来计数不行?

function test() {
var div = document.getElementById("mydiv");
var btn = document.getElementById("btn");
div.style.display = "none";

addEvent(btn,"click",hhh);
function hhh() {
div.style.display == 'none' ? div.style.display = 'block' : div.style.display = 'none';
}
}

addLoadEvent(test);
最佳答案
你用什么浏览器测试?
为什么我执行你的代码可以啊!
不好意思,原来我帮你改成:
function test() {
var div = document.getElementById("mydiv");
var btn = document.getElementById("btn");

div.style.display = "none";
var x = 0;
addEvent(btn,"click",clickfun);

function clickfun(){
if(x == 0){
div.style.display = "block";
x = 1;
}else{
div.style.display = "none";
x = 0;
}
}
}

==========================
关于你问x计数为什么不行!
其实不是你的x计数不行
而是你这样判断,
var x = 0;
if (x==0){
addEvent(btn,"click",open);
}
else{
addEvent(btn,"click",close);
}
你这样写的判断,在第一次加载后,你为btn的onclick方法添加了open()方法,之后,你在点击“点我”的时候,btn执行的就是open()方法,跟你的test方法没有脱离了关系

希望能够帮到你!!!
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
QQ好中毒后怎么办,是不是修改一下密码就可以
技工的相关专业是什么?
上面一个跳字下面一张纸猜成语
杭州通卡退卡
宾馆房费天数押金怎么计算?
华东师大版一课一练六年级下n版英语答案
鑫农家饭店这个地址在什么地方,我要处理点事
怎样将梯形图形经过平移,旋转,轴对称得到一个
食品包装袋上的生产日期可以直接用手擦掉,说
不后悔 名言警句
大众速腾发动机故障灯亮,检测显示燃油过稀如
有没有 随借随还的银行卡,象白领通
黄色与灰色的外墙砖搭配效果如何?
新绿缘形象设计我想知道这个在什么地方
亿姿美容美发用品这个地址在什么地方,我要处
推荐资讯
蚯蚓在干燥的环境里不久会死亡,原因是A.循环
在贴吧发同人文,明明是自己原创的,别人却说
“机构精简,行政效率提高,遇事不互相推诿,
华英布艺地址在哪,我要去那里办事
40岁中年女 老感觉想尿尿是啥原因 小肚子还经
24小时尿蛋白定量1900.严重吗
怎样尊称别人的男朋友
青岛市黄岛区有没有好一点的老中医麻烦大家给
I myEnglishbook.Look!IsthatyourEnglis
钢丝绳断了,北京哪里有接钢丝绳的地方,就是
在哪个网站可以收听泰国的电台Pynk FM98
浦口区城南门诊部在哪里啊,我有事要去这个地
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?