脚本标记中的javascript onClick

时间:2013-01-16 21:57:18

标签: javascript html5 onclick

我的代码(迷你计算器应用):( html / js)

<input class="value" type="text" id="first" />
<input class="value" type="text" id="second" />
<input class="value" type="text" id="result" />
<input class="button" type="button" value="+" id="plus" />

window.onLoad = function motor()
{
    var plus = document.getElementById("plus");

    function updateResult(act)
    {
        var first = parseFloat(document.getElementById("first").value);
        var second = parseFloat(document.getElementById("second").value);
        if (isNaN(first)) first = 0;
        if (isNaN(second)) second = 0;

        if (act == '+') {
            document.getElementById("result").value = first + second;
        }
    }
    plus.onClick = updateResult('+');
}

这不起作用:(当按下按钮“id”时我需要onClick动作

5 个答案:

答案 0 :(得分:2)

您正在将函数调用的结果分配给onclick事件。您没有指定对该功能的引用。

此外,点击事件名称使用 lower 案例c。

plus.onclick = function(){updateResult('+');};

答案 1 :(得分:1)

您希望将plus对象的onClick属性设置为函数,而不是调用updateResult()(未定义)的结果。实现此目的的一种方法是让updateResult()返回一个函数:

window.onLoad = function motor()
{
    var plus = document.getElementById("plus");

    function updateResult(act)
    {
        return function(){
            var first = parseFloat(document.getElementById("first").value);
            var second = parseFloat(document.getElementById("second").value);
            if (isNaN(first)) first = 0;
            if (isNaN(second)) second = 0;

            if (act == '+') {
                document.getElementById("result").value = first + second;
            }
        };
    }
    plus.onclick = updateResult('+');
}

答案 2 :(得分:1)

//JS is case-sensitive, the correct property name is `onload` not onLoad
window.onload = function motor()
[...]
    //onclick not onClick
    plus.onclick = function() {
      //you need to assign a function to execute on `onclick` instead of
      //the return value of calling it with () which you were doing previously
      updateResult('+');
    };

Fiddle

另外,请考虑使用代码质量分析工具,例如JSHint。即使它可能无法捕获这些错误类型,因为在这些对象上创建新属性是“有效的”,它应该在将来帮助您。此外,如果您对如何使用函数或属性或其正确的拼写/语法有疑问,可以查看MDN。例如,window.onload docs

答案 3 :(得分:1)

不需要进行加载,只需将事件单击即可。这是代码:

OS
import org.apache.spark.sql.expressions.Window

Dataset<Row> df2 = df.groupBy(
    functions.col("HOUSE_ID"),
    functions.minute(col("CONDATE")).alias("minute")
).agg(
    functions.min("ENERGY_READING").alias("ENERGY_READING")
).withColumn(
    "LAG_ENERGY_READING",
    functions.lag(functions.col("ENERGY_READING"), 1).over(Window.partitionBy("HOUSE_ID").orderBy("minute"))
).withColumn(
    "consumption",
    functions.expr("ENERGY_READING - LAG_ENERGY_READING")
)

答案 4 :(得分:0)

它是onclick,而不是onClick

请确保案件正确无误。