警报(“嗨!”)和功能()之间的区别{alert(“嗨!”)}

时间:2016-01-20 06:19:54

标签: javascript dom

当我们在按钮中执行内联命令时:

document.getElementById("myButton").onclick = alert('Hi!') 

为什么

function()

不起作用,但在页面加载时发出警报?我无法理解添加function()并且没有 List<int> list1 = new List<int>(); List<int> list2 = new List<int>(); List<int> listDifference = new List<int>(); foreach (var item1 in list1) { foreach (var item2 in list2) { if (item1 != item2) listDifference.Add(item1); } } 的情况如何。我希望你们理解我的问题。我在这里错过了一些东西。

5 个答案:

答案 0 :(得分:31)

ul.product-categories {
  list-style: none;
}

错误,因为onclick应该分配给函数引用,而不是函数调用结果本身。

当页面加载时它将执行document.getElementById("myButton").onclick = alert('Hi!') 但这不是意图,是吗?分配onclick处理程序的目的是确保在单击按钮时将执行此警报。

要实现这一目标,应该是:

alert('Hi!')

此外,除非将其包含在document.getElementById("myButton").onclick = function(){alert('Hi!')}; 事件中,否则无法执行此操作:

window.onload

答案 1 :(得分:10)

alert('Hi!')是一个功能来电,可以提醒您<嗨>&#39;什么都不返回(undefined)。

onclick期望获得一个函数,并且您正在传递函数调用的结果undefined

由于JavaScript不是强类型框架,因此您不会在错误的作业上收到错误。

那么为什么以下工作:

<button id = "myButton" onclick="alert('Hi!')">

这是因为html解析器(在这种情况下,你的浏览器)在幕后做了一些工作并用函数包装了调用。

答案 2 :(得分:7)

document.getElementById("myButton").onclick期望稍后调用函数。

<button id = "myButton "onclick="alert('Hi!')">期望稍后执行一段代码。

答案 3 :(得分:6)

{% extends 'base.html' %}

{% block content %}

    <form method="POST" action="url with category here">{% csrf_token %}
        <label>enter your phone:</label>
        <input type="text" id="mobile_number" />

        {% for product_key, product in product_list %}
            {% for item_key, item in product %}
                <input type="checkbox" name="{{ product_key }}-{{ item_key }}" value="{{ product_key }}-{{ item_key }}" />{{ item_value }}<br />
            {% endfor %}
        {% endfor %}

        <button type="submit" >Submit</button>
    </form>

{% endblock %}

此处警告是浏览器调用的内置函数,可打开警告框。

alert('Hi') 

此处 callAlert 是一个自定义函数,可调用内置函数警告

在您的示例中,当附加点击事件时,您必须定义该功能

function callAlert(){
  alert('Hi');
}

已经执行

document.getElementById("myButton").onclick = alert('Hi!') //alert is 

答案 4 :(得分:5)

请参阅this post for explanation for why the inline version works

简而言之,浏览器不只是将alert('Hi!')分配给onclick,而是将其包含在函数中。