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加载问题,错误是因为元素不存在。