Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/386.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函数赢得';不要点击按钮就开火_Javascript_Function_Onclick - Fatal编程技术网

JavaScript函数赢得';不要点击按钮就开火

JavaScript函数赢得';不要点击按钮就开火,javascript,function,onclick,Javascript,Function,Onclick,我刚刚开始自学JavaScript,正在做一些基本的练习。现在我正在尝试制作一个函数,它接受三个值并输出最大值。但是,该功能拒绝在单击按钮时启动。我试图制作一个单独的、非常简单的函数,只是为了调试,但它也拒绝启动。我已经以几乎完全相同的方式编写了其他练习函数(它们有两个参数,而不是三个),这些函数工作得很好。如有任何见解,将不胜感激 <!DOCTYPE HTML> <html> <head> <script type = "text/javascript

我刚刚开始自学JavaScript,正在做一些基本的练习。现在我正在尝试制作一个函数,它接受三个值并输出最大值。但是,该功能拒绝在单击按钮时启动。我试图制作一个单独的、非常简单的函数,只是为了调试,但它也拒绝启动。我已经以几乎完全相同的方式编写了其他练习函数(它们有两个参数,而不是三个),这些函数工作得很好。如有任何见解,将不胜感激

<!DOCTYPE HTML>
<html>
<head>
<script type = "text/javascript">
<!--

//Define a function Max() that takes three numbers as 
//arguments and returns the largest of them.
function Boo(){
    document.write("boo");
    alert("boo");
}


function Max(p1, p2, p3){
    document.write(p1+p2+p3);
    alert('BOO!')

    document.write(document.getElementById('value1').value);

    var max = Number(p1);
    v2 = Number(p2):
    v3 = Number(p3);    

    if (v2 > max)
        max = v2;
    if (v3 > max)
        max = v3;

    document.write(max);
}
-->
</script>
    </head>
    <body>
<form>
    <input type="text" id="value1" name="value1"/><br />
    <input type="text" id="value2" name="value2"/><br />
    <input type="text" id="value3" name="value3"/><br />
    <input type = "button" 
    onclick="Boo()" 
    value = "Compare!"/>
    <!-- onclick="Max(document.getElementById('value1').value,
                 document.getElementById('value2').value,
                 document.getElementById('value3').value)" -->
</form>
  </body>
 </html>





您的javascript函数被注释为

应该是

v2 = Number(p2);

此外,查看开发人员工具,了解您正在使用的任何浏览器,以查找像这样的简单语法错误。(在大多数浏览器中,您可以按F12)

chrome开发者工具说它有语法错误

v2 = Number(p2):
应该是:

v2 = Number(p2);
这就是您所需要的:

    var elements = document.getElementsByName('to_compare');
    var elementsAsArray = [].slice.call(elements);
    var numberValues = elementsAsArray.map(function(x) {
        return Number(x.value)
    });
    return Math.max.apply(this, numberValues);
完整演示,包括使用
console.log
而不是
document.write
,还包括如何在不清除文档的情况下附加到文档:


函数比较(){
var elements=[].slice.call(document.getElementsByName('to_compare'));
var numberValues=elements.map(函数(x){returnnumber(x.value)});
返回Math.max.apply(这是numberValues);
}


Boo()有效吗?如果没有,则检查浏览器中是否启用了JS。在max函数中,第二行末尾缺少分号,这将导致失败。您应该对所有变量使用
var
,如
v2
v3
,以避免在javascript中隐式使用全局变量(Max或其他名为
v2
的函数的多个实例将覆盖彼此的值)。供将来参考,
Math.Max(1,2,3)
->
3
事实上,这是有效的。它适用于所有不支持javascript的浏览器。这是一个非常古老的流派。见:*总台,就是这样。谢谢我试着用Firebug来做这样愚蠢的事情,但长话短说,我不能:(.你会推荐类似的程序吗?最新版本的firefox有一些很好的开发工具。那也可以。或者试着按Shift+CTRL+J(在firefox中)
    var elements = document.getElementsByName('to_compare');
    var elementsAsArray = [].slice.call(elements);
    var numberValues = elementsAsArray.map(function(x) {
        return Number(x.value)
    });
    return Math.max.apply(this, numberValues);
<head>
    <script type="text/javascript">

function compare() {
    var elements = [].slice.call(document.getElementsByName('to_compare'));
    var numberValues = elements.map(function(x){return Number(x.value)});
    return Math.max.apply(this, numberValues);
}

    </script>
</head>

<body>
    <input type="text" id="value1" name="to_compare" value="-10"/>
    <input type="text" id="value2" name="to_compare" value="080"/>
    <input type="text" id="value3" name="to_compare" value="79"/>
    <br/>
    <input type="button" onclick="console.log(compare())" value="Compare!"/>
</body>