Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/452.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 网页更改一次后如何刷新?_Javascript_Html_Refresh_Webpage - Fatal编程技术网

Javascript 网页更改一次后如何刷新?

Javascript 网页更改一次后如何刷新?,javascript,html,refresh,webpage,Javascript,Html,Refresh,Webpage,函数更改(){ item=document.getElementById(“第一个”); item.value=“第二”; item.id=“第二”; } ob=document.getElementById(“第一”); ob.addEventListener(“单击”,更改); var item=document.getElementById(“第一”); 函数更改(){ item.value=“第二”; item.id=“第二”; var second=document.getEle


函数更改(){
item=document.getElementById(“第一个”);
item.value=“第二”;
item.id=“第二”;
}
ob=document.getElementById(“第一”);
ob.addEventListener(“单击”,更改);

var item=document.getElementById(“第一”);
函数更改(){
item.value=“第二”;
item.id=“第二”;
var second=document.getElementById(“second”);
第二,添加EventListener(“单击”,上一步);
}
项目。添加的列表器(“单击”,更改);
函数previous(){
控制台日志(1);
//document.execCommand('Refresh');
}
第一种解决方案:

var element_1=document.getElementById(“第一”),
element_2=document.getElementById(“第二个”);
元素_1.addEventListener(“单击”,函数(){
元素_1.style.display=“无”;
元素_2.style.display=“”;
});
元素2.addEventListener(“单击”,函数(){
元素_2.style.display=“无”;
元素_1.style.display=“”;
});

实际上无法理解,为什么您需要这样一种模糊的方法来执行此操作,而
又是什么意思。execCommand(“刷新”)
甚至应该是什么意思-
execCommand
文档甚至没有将
刷新
列为选项,但是,您的错误是由以下几行代码引起的:

item = document.getElementById("first");

ob = document.getElementById("second");
在第一种情况下,当您第二次尝试更改项目的
val
id
时,它已经有另一个
id
(通过第一次使用功能更改)

在第二种情况下,您尝试将事件侦听器绑定到该行执行时页面上不存在的元素

如果我是你,我会这样写smth(假设出于某种原因,你真的需要更改对象的id):

ob=document.getElementById('first');
ob.addEventListener('click',function()){
if(this.id=='first'){
this.id='second';
this.value='second';
}否则{
location.reload();
}
});

因此,我不完全清楚您为什么要这样做(另一个示例可能会有所帮助),但您可以通过以下代码消除错误并实现您的功能:

函数更改(){
var item=document.getElementById(“第一”);
item.value=“第二”;
item.id=“第二”;
项目。removeEventListener(“单击”,更改);
item.addEventListener(“单击”,刷新);
}
函数刷新(){
document.location.reload();
}
var ob=document.getElementById(“第一”);
ob.addEventListener(“单击”,更改);
试试这个:

function change() {
    item = document.getElementById("first");
    item.value = "second";
    item.id = "second";
    if(item.id == "second"){
        location.reload();  // only reload if changed
    }
}

ob = document.getElementById("first");
ob.addEventListener("click", change); 

您可以在文档对象上注册一个侦听器,并过滤掉除所需之外的任何其他单击。然后避免添加/删除任何侦听器,整个逻辑可以位于一个范围内的一个位置

document.addEventListener('click',e=>{
常量选项=['第一个','第二个']
常数t=e.target
if(!~options.indexOf(t.id))返回
const selected=options[Number(t.id==options[0])]//truthy值(t.id===“first”)转换为1,选择“second”项,falsy则相反
t、 id=已选择
t、 值=已选择
//做另一件事
})

据我所知,您的代码存在以下问题:

未捕获的TypeError:无法读取null的属性“addEventListener”

在这条线上:

ob.addEventListener("click", previous);
这是因为上面的行,
ob
被重新定义为:

ob = document.getElementById("second");
由于带有
id=“second”
的元素仅在函数
change()
中创建,因此此行会导致错误,因为它实际上是在运行
change()
之前执行的,这意味着代码一运行就停止

简而言之,您应该放置以下两行:

var ob = document.getElementById("second");
ob.addEventListener("click", previous);
change()
函数中,因此您的代码应该如下所示:

ob=document.getElementById(“第一”);
ob.addEventListener(“单击”,更改);
函数更改(){
item=document.getElementById(“第一个”);
item.value=“第二”;
item.id=“第二”;
ob=document.getElementById(“第二个”);
ob.addEventListener(“单击”,上一步);
}
函数previous(){
document.execCommand('Refresh')
}

我们没有命令
“刷新”
。看。我想你应该改用函数吗?这绝对不是dom加载问题,错误是因为元素不存在。