Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.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 变量的范围还是别的?非常开始的JS_Javascript_Button_Input_Global Variables_Setattribute - Fatal编程技术网

Javascript 变量的范围还是别的?非常开始的JS

Javascript 变量的范围还是别的?非常开始的JS,javascript,button,input,global-variables,setattribute,Javascript,Button,Input,Global Variables,Setattribute,抱歉出错-我的第一篇帖子。我想点击“尝试”按钮,改变第一个“确定”输入的类型。更改后,我想再次单击“重试”按钮,并将id为“INPUT”的元素类型更改为“再次输入”。我认为变量done的范围有问题,它告诉我是否有2个按钮或input和button //JS window.onload = function Load(){ var done = false; var foo = document.getElementById('g'); if(!done){ foo.onclick = Chan

抱歉出错-我的第一篇帖子。我想点击“尝试”按钮,改变第一个“确定”输入的类型。更改后,我想再次单击“重试”按钮,并将id为“INPUT”的元素类型更改为“再次输入”。我认为变量done的范围有问题,它告诉我是否有2个按钮或input和button

//JS
window.onload = function Load(){
var done = false;
var foo = document.getElementById('g');
 if(!done){
foo.onclick = Change1;
 }else{
foo.onclick = Change2;
}

};

function Change1(){
 inp = document.getElementById('inputt');
 inp.setAttribute('type', 'button');
 done = true;

}
function Change2(){
 but = document.getElementById('inputt');
 but.setAttribute('type','input');
}

//HTML
<input value="ok" id="inputt">
<p>Click the button below to set the type attribute of the button above.</p>
<button id="g">Try it</button>
//JS
window.onload=函数加载(){
var done=false;
var foo=document.getElementById('g');
如果(!完成){
foo.onclick=Change1;
}否则{
foo.onclick=Change2;
}
};
函数Change1(){
inp=document.getElementById('input');
inp.setAttribute('type','button');
完成=正确;
}
函数更改2(){
但是=document.getElementById('input');
但是.setAttribute('type','input');
}
//HTML
单击下面的按钮以设置上面按钮的类型属性

试试看
将不再执行
窗口.onload
事件,它仅在窗口…加载时发生一次

看看这是不是你想要的。


为什么您希望您的代码再次更改它?开头有“var done=false”,所以我调用Change1,在这个(Change1)中,我将done更改为true。但是我的代码似乎有点复杂,如果您为我们制作了一个JSFIDLE来测试这一点,它将非常有用。[JSFiddle](JSFiddle.net}它在fiddle上不起作用(在我的浏览器中可以)“范围”是指范围吗?请在答案中包含解决方案,并进行解释。我可以跳过窗口吗?在文档中加载?如果我这样做,代码不工作。确定,您可以将函数更改1分配给标记中的
onclick
事件:没有理由必须使用
onload
事件。
 //JS
 window.onload = function Load(){
     var foo = document.getElementById('g');
     foo.onclick = Change1;
 };

 function Change1(){
     inp = document.getElementById('inputt');
     inp.setAttribute('type', 'button');
     var foo = document.getElementById('g');
     foo.onclick = Change2;
 }

 function Change2(){
     but = document.getElementById('inputt');
     but.setAttribute('type','input');
 }