Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/454.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 - Fatal编程技术网

Javascript 有人能帮我在JS中正确定义函数吗?

Javascript 有人能帮我在JS中正确定义函数吗?,javascript,Javascript,我已经用HTML创建了一个按钮,正在尝试运行一个用JavaScript编程的函数。我无法使函数工作并接收错误消息: 引用错误:未定义myFunction 这是我的密码。有人能帮我定义这个函数吗 ....<button type="button" onclick="myFunction(shot)">... <script lang="JavaScript"> var shot = Math.random(); if (shot < .001) { sho

我已经用HTML创建了一个按钮,正在尝试运行一个用JavaScript编程的函数。我无法使函数工作并接收错误消息:

引用错误:未定义myFunction

这是我的密码。有人能帮我定义这个函数吗

....<button type="button" onclick="myFunction(shot)">...

<script lang="JavaScript">
var shot = Math.random();

if (shot < .001) {
    shot = 1;
} else if (shot < .18) {
    shot = 2;
} else if (shot < .5) {
    shot = 3;
} else if (shot < .84) {
    shot = 4;
} else if (shot < .94) {
    shot = 5;
} else if (shot < .991) {
    shot = 6;
} else {
    shot = 7;
};

function myFunction(x) {
    if (x === 1) {
        console.log("-2");
    } else if (x === 2) {
        console.log("-1");
    } else if (x === 3) {
        console.log("0");
    } else if (x === 4) {
        console.log("+1");
    } else if (x === 5) {
        console.log("+2");
    } else if (x === 6) {
        console.log("+3");
    } else {
        console.log("+4");
    }
};
</script>
。。。。。。。
var shot=Math.random();
如果(镜头<.001){
shot=1;
}否则,如果(快照<.18){
镜头=2;
}否则,如果(快照<.5){
镜头=3;
}否则,如果(快照<.84){
镜头=4;
}否则,如果(镜头<.94){
镜头=5;
}否则如果(放炮<.991){
镜头=6;
}否则{
快照=7;
};
函数myFunction(x){
如果(x==1){
控制台日志(“-2”);
}else如果(x==2){
控制台日志(“-1”);
}else如果(x==3){
控制台日志(“0”);
}else如果(x==4){
控制台日志(“+1”);
}else如果(x==5){
控制台日志(“+2”);
}else如果(x==6){
控制台日志(“+3”);
}否则{
控制台日志(“+4”);
}
};

这很可能是因为脚本位于HTML中的
之后。把它放在上面,一切都会好起来。

因为你的按钮在脚本之前,所以按钮不知道你的功能。当您按下按钮时,功能尚未定义。您必须为按钮放置脚本

另外,最好将
type=“text/javascript”
放在
标记中

您的脚本如下所示:

<script type="text/javascript">
var shot = Math.random();
if (shot < .001) {
    shot = 1;
} else if (shot < .18) {
    shot = 2;
} else if (shot < .5) {
    shot = 3;
} else if (shot < .84) {
    shot = 4;
} else if (shot < .94) {
    shot = 5;
} else if (shot < .991) {
    shot = 6;
} else {
    shot = 7;
};

function myFunction(x) {
    if (x === 1) {
        console.log("-2");
    } else if (x === 2) {
        console.log("-1");
    } else if (x === 3) {
        console.log("0");
    } else if (x === 4) {
        console.log("+1");
    } else if (x === 5) {
        console.log("+2");
    } else if (x === 6) {
        console.log("+3");
    } else {
        console.log("+4");
    }
};
</script>

<button type="button" onclick="myFunction(shot)">

var shot=Math.random();
如果(镜头<.001){
shot=1;
}否则,如果(快照<.18){
镜头=2;
}否则,如果(快照<.5){
镜头=3;
}否则,如果(快照<.84){
镜头=4;
}否则,如果(镜头<.94){
镜头=5;
}否则如果(放炮<.991){
镜头=6;
}否则{
快照=7;
};
函数myFunction(x){
如果(x==1){
控制台日志(“-2”);
}else如果(x==2){
控制台日志(“-1”);
}else如果(x==3){
控制台日志(“0”);
}else如果(x==4){
控制台日志(“+1”);
}else如果(x==5){
控制台日志(“+2”);
}else如果(x==6){
控制台日志(“+3”);
}否则{
控制台日志(“+4”);
}
};

我相信是对按钮onClick方法的调用造成了问题

此时代码中未定义shot变量。 在使用之前,您需要首先声明变量。或者最好将其从按钮调用中删除,并在myFunction中定义如下:

<script type="text/javascript">
  function getRandomInt(min, max) {
    return Math.floor(Math.random() * (max - min + 1)) + min;
  }

  function getShot() {
    return getRandomInt(1, 7);
  }

function myFunction() {
   var x  = getShot();
    if (x === 1) {
        console.log("-2");
    } else if (x === 2) {
        console.log("-1");
    } else if (x === 3) {
        console.log("0");
    } else if (x === 4) {
        console.log("+1");
    } else if (x === 5) {
        console.log("+2");
    } else if (x === 6) {
        console.log("+3");
    } else {
        console.log("+4");
    }
};
</script>

函数getRandomInt(最小值、最大值){
返回Math.floor(Math.random()*(max-min+1))+min;
}
函数getShot(){
返回getRandomInt(1,7);
}
函数myFunction(){
var x=getShot();
如果(x==1){
控制台日志(“-2”);
}else如果(x==2){
控制台日志(“-1”);
}else如果(x==3){
控制台日志(“0”);
}else如果(x==4){
控制台日志(“+1”);
}else如果(x==5){
控制台日志(“+2”);
}else如果(x==6){
控制台日志(“+3”);
}否则{
控制台日志(“+4”);
}
};

我会使用jQuery:

var shot;
$(document).ready(function () {
    shot = Math.random();

    if (shot < 0.001) {
        shot = 1;
    } else if (shot < 0.18) {
        shot = 2;
    } else if (shot < 0.5) {
        shot = 3;
    } else if (shot < 0.84) {
        shot = 4;
    } else if (shot < 0.94) {
        shot = 5;
    } else if (shot < 0.991) {
        shot = 6;
    } else {
        shot = 7;
    }
});

$("#myButton").click(function () {
    var x = shot;
    if (x === 1) {
        console.log("-2");
    } else if (x === 2) {
        console.log("-1");
    } else if (x === 3) {
        console.log("0");
    } else if (x === 4) {
        console.log("+1");
    } else if (x === 5) {
        console.log("+2");
    } else if (x === 6) {
        console.log("+3");
    } else {
        console.log("+4");
    }
});
var镜头;
$(文档).ready(函数(){
shot=Math.random();
如果(放炮<0.001){
shot=1;
}否则如果(放炮<0.18){
镜头=2;
}否则,如果(放炮<0.5){
镜头=3;
}否则,如果(放炮<0.84){
镜头=4;
}否则,如果(放炮<0.94){
镜头=5;
}否则如果(放炮<0.991){
镜头=6;
}否则{
快照=7;
}
});
$(“#我的按钮”)。单击(函数(){
var x=射击;
如果(x==1){
控制台日志(“-2”);
}else如果(x==2){
控制台日志(“-1”);
}else如果(x==3){
控制台日志(“0”);
}else如果(x==4){
控制台日志(“+1”);
}else如果(x==5){
控制台日志(“+2”);
}else如果(x==6){
控制台日志(“+3”);
}否则{
控制台日志(“+4”);
}
});
按如下按钮:

<button id="myButton" type="button">Test</button>
测试
演示


但是,如果不在单击功能中计算“shot”,则每页加载的结果将是相同的

您可以将代码放在按钮之前

使用

document.addEventListener("DOMContentLoaded", function(event) { 
 //put your function here
 }); 
另外,一个好的实践(关注点分离)是不要对html进行函数调用。相反,您可以在javascript中添加事件侦听器

document.getElementById("myButton").addEventListener("click", function(){
// your function here
});

控制台中显示了什么?有错误吗?试着把
type=“text/javascript”
放在你的脚本标签上。我把你的代码粘贴到一个本地HTML页面上,效果很好。您的页面上是否有任何其他JS可能存在错误,导致
myFunction
定义无法加载?如果有帮助,请告诉我原因!!为什么jQuery的一切都是如此简单,他真的需要加载整个库?为什么?