Javascript innerHTML中的我的函数不工作,比如当我单击按钮时,函数未定义
你好,有人能帮我吗?谢谢,我不知道怎么了Javascript innerHTML中的我的函数不工作,比如当我单击按钮时,函数未定义,javascript,Javascript,你好,有人能帮我吗?谢谢,我不知道怎么了 var state=false; 函数myFunction(){ var x=document.getElementById(“按钮”); 状态=!状态; 如果(州){ x、 value=“ON”; }否则{ x、 value=“OFF”; } } const rootApp=document.getElementById(“根”); rootApp.innerHTML=''; var状态=假; 函数myFunction(){ var x=docum
var state=false;
函数myFunction(){
var x=document.getElementById(“按钮”);
状态=!状态;
如果(州){
x、 value=“ON”;
}否则{
x、 value=“OFF”;
}
}
const rootApp=document.getElementById(“根”);
rootApp.innerHTML='';
var状态=假;
函数myFunction(){
var x=document.getElementById(“按钮”);
状态=!状态;
如果(州){
x、 value=“ON”;
}否则{
x、 value=“OFF”;
}
}
const rootApp=document.getElementById(“根”);
rootApp.innerHTML='';
您确定文档中有#root
元素吗?javascript代码是否位于头部
或正文
如果您将您提供的代码复制/粘贴到此页面上的控制台中,并将其目标设置为document.body
在rootApp
中,而不是document.getElementById(“root”)代码>所以我怀疑您的问题是由于外部原因造成的
另外
如果您使用const
,您应该使用let
而不是var
,因为您在顶级作用域中声明state
,它可以在任何嵌套作用域(您的函数体)中访问
如果您不关心(3),可以通过在onclick
属性中将this
传递到myFunction
来访问按钮,这样做就不需要在myFunction
内部使用getElementById
,因为它将作为参数提供
最好自己创建按钮元素,并使用addEventListener
来添加交互性,而不是使用innerHTML
另外,可以通过使用复选框而不是按钮来改进这一点:您不必一直同步选中状态。你总是可以
返工代码
let state=false;
函数myFunction({target}){
状态=!状态;
target.value=状态为“开”:“关”;
}
//让我们尝试获取#根元素
const rootId='root';
让rootApp=document.getElementById(rootId);
//如果没有#根元素,我们可以创建一个
如果(!rootApp){
rootApp=document.createElement('div');
rootApp.id=rootId;
document.body.appendChild(rootApp);
}
//创建按钮元素并设置其属性
常量元素=document.createElement('input');
element.type='button';
element.id='button';
//确保'value'与'state'同步`
element.value=状态?'“开”:“关”;
//收听点击事件
元素。addEventListener('click',myFunction);
//附加到#根
rootApp.appendChild(元素);
您好,先生,它不是嵌入在.html文件中,而是嵌入在.js文件中,您发现了吗?如果你不想让我知道你被困在哪里,你可以在这里查看它仍然不起作用我不知道为什么:(你的代码都被注释掉了,删除每行开头的/
。)看看我的答案,然后使用我给出的代码,它会工作的是的,如果我将它包含在一个.html文件中,它会工作的,但我正在.js文件中构建它谢谢你,先生,明白了,它终于工作了,不客气!别忘了投票并接受答案:)