Javascript 我的按钮没有';t变换函数

Javascript 我的按钮没有';t变换函数,javascript,html,css,Javascript,Html,Css,我想知道为什么按钮没有变为另一个功能,当再次单击按钮时,按钮会变为红色 我的目标是有一个按钮,将改变功能取决于你是否按下一次 #你好{ 填充:30px 60px; 背景色:#4db8ff; 宽度:100px; 文本对齐:居中; 左边距:自动; 右边距:自动; 光标:指针; 颜色:白色; 字体系列:arial; 字体大小:20px; } 开始 var x=真; 如果(x==true){ 功能按钮(){ x=假; 警报(“一次”); } } 如果(x==false){ 功能按钮(){ 警惕(“两

我想知道为什么按钮没有变为另一个功能,当再次单击按钮时,按钮会变为红色

我的目标是有一个按钮,将改变功能取决于你是否按下一次


#你好{
填充:30px 60px;
背景色:#4db8ff;
宽度:100px;
文本对齐:居中;
左边距:自动;
右边距:自动;
光标:指针;
颜色:白色;
字体系列:arial;
字体大小:20px;
}
开始
var x=真;
如果(x==true){
功能按钮(){
x=假;
警报(“一次”);
}
}
如果(x==false){
功能按钮(){
警惕(“两次”);
document.getElementById(“hello”).style.background=“#ff3333”;
}
}

您正在页面加载时有条件地创建两种可能的函数定义之一。第二个定义不会仅仅因为您在某个点重新分配了布尔标志而替换第一个定义

创建一个单独的函数,在内部检查
x
的状态:

function button() {
    if(x) { // Comparing against true is redundant
        x = false;
        alert("once");

    } else {
        alert("twice");
        document.getElementById("hello").style.background = "#ff3333";
    }
}

您在页面加载时有条件地创建两个可能的函数定义之一。第二个定义不会仅仅因为您在某个点重新分配了布尔标志而替换第一个定义

创建一个单独的函数,在内部检查
x
的状态:

function button() {
    if(x) { // Comparing against true is redundant
        x = false;
        alert("once");

    } else {
        alert("twice");
        document.getElementById("hello").style.background = "#ff3333";
    }
}
您的函数
按钮()
只定义了一次。您不能基于条件定义函数,它将在执行其周围代码后立即定义。因此,您需要将
if
语句放在函数中


#你好{
填充:30px 60px;
背景色:#4db8ff;
宽度:100px;
文本对齐:居中;
左边距:自动;
右边距:自动;
光标:指针;
颜色:白色;
字体系列:arial;
字体大小:20px;
}
开始
var x=真;
功能按钮(){
if(x){
x=假;
警报(“一次”);
}否则{
警惕(“两次”);
document.getElementById(“hello”).style.background=“#ff3333”;
}
}
您的函数
按钮()
只定义了一次。您不能基于条件定义函数,它将在执行其周围代码后立即定义。因此,您需要将
if
语句放在函数中


#你好{
填充:30px 60px;
背景色:#4db8ff;
宽度:100px;
文本对齐:居中;
左边距:自动;
右边距:自动;
光标:指针;
颜色:白色;
字体系列:arial;
字体大小:20px;
}
开始
var x=真;
功能按钮(){
if(x){
x=假;
警报(“一次”);
}否则{
警惕(“两次”);
document.getElementById(“hello”).style.background=“#ff3333”;
}
}

非常感谢您的回复。我一定要把它添加到我的project@Simon没问题。非常感谢您的回复。我一定要把它添加到我的project@Simon没问题,谢谢你的回复。只是一个想法,当你像那样单独放置一个x/变量时,它意味着什么?@Simon All
if
正在检查它所给出的是否可以被认为是“真的”。编写
x==true
时,返回
true
false
x
本身已经等于
true
false
,因此您不需要
==true
部分。好的,明白了。谢谢lot@Simon没问题。请确保您真正了解
if
while
和其他构造的条件,以及它们如何使用您提供的值。你会经常使用它们,所以对它们有很好的理解是很重要的。谢谢你的回复。只是一个想法,当你像那样单独放置一个x/变量时,它意味着什么?@Simon All
if
正在检查它所给出的是否可以被认为是“真的”。编写
x==true
时,返回
true
false
x
本身已经等于
true
false
,因此您不需要
==true
部分。好的,明白了。谢谢lot@Simon没问题。请确保您真正了解
if
while
和其他构造的条件,以及它们如何使用您提供的值。你会不断地使用它们,所以对它们有一个很好的理解是很重要的。