Javascript 有人能帮我在JS中正确定义函数吗?
我已经用HTML创建了一个按钮,正在尝试运行一个用JavaScript编程的函数。我无法使函数工作并接收错误消息: 引用错误:未定义myFunction 这是我的密码。有人能帮我定义这个函数吗Javascript 有人能帮我在JS中正确定义函数吗?,javascript,Javascript,我已经用HTML创建了一个按钮,正在尝试运行一个用JavaScript编程的函数。我无法使函数工作并接收错误消息: 引用错误:未定义myFunction 这是我的密码。有人能帮我定义这个函数吗 ....<button type="button" onclick="myFunction(shot)">... <script lang="JavaScript"> var shot = Math.random(); if (shot < .001) { sho
....<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的一切都是如此简单,他真的需要加载整个库?为什么?