关于在HTML中使用JavaScript和事件处理程序的问题

时间:2014-06-05 17:47:50

标签: javascript html javascript-events

当您在HTML中使用事件时,如果只包含一小部分JavaScript,那会是什么?它被称为“JavaScript属性函数”,只是一个“JavaScript属性”,还是什么?例如:

<button onClick="location.href='some_place'">click me</button>

使用事件时,您使用“return”关键字,那叫什么?是否有一些特定的术语用于描述这一点?我知道它做了什么以及它是如何工作的,我只是不知道该怎么称呼它。例如:

<button onClick="return someFunction();">click me</button>

这两个JavaScript可以合并为一个属性吗?我想将前两个例子合二为一。单击按钮时,我想调用JavaScript函数。如果函数返回“true”,我想要触发location.href。如果函数返回“false”,我不希望触发location.href。

3 个答案:

答案 0 :(得分:0)

onclick是事件处理程序    一旦函数到达将停止执行的return语句,return就是return语句

组合这两个函数可能看起来像这样

function  someFunction(){
  var x = someBool; 
  if(x){
     location.href='some_place'
   }else{
     return false;
  }

}

答案 1 :(得分:0)

onclick是一个将事件绑定到元素的HTML属性。属性的值是事件处理程序的主体。您可以在那里编写任何您想要的内容,但是您需要在代码中转义引号",否则HTML解析器会认为您已经完成了属性值的定义

所以你的代码可以是:

<button onclick="if(someFunction()) location.href='some_place';"></button>

但是,就像Sam Creamer指出的那样,你不需要一个按钮。您可以使用a href

执行此操作
<a href="some_place" onclick="return someFunction();"></a>

如果someFunction返回false,则点击事件将被取消,您将无法在任何地方重定向。

如果您想在属性中添加更多代码,更实用的方法是:

onclick="return someOtherFunction()"

,其中someOtherFunction包含您的所有代码 或者像这个JS代码:

document.getElementById("the_id_of_the_element").onclick=function() {/* your code here */};

,但这可能不适用于旧浏览器(其他代码是必需的):

function bindEvent(element, type, handler) {
    if(element.addEventListener) {
        element.addEventListener(type, handler, false);
    } else {
        element.attachEvent('on'+type, handler);
    }
}
bindEvent(document.getElementById("the_id_of_the_element"), 'click', function() {/*Your code here*/ });

您还可以使用jQuery来绑定事件,这些事件完全相同

$("#the_id_of_the_element").on("click", function() {/*your code here*/});
$("#the_id_of_the_element").on("click", function() {/*some other code*/});
//both will execute

答案 2 :(得分:0)

  1. 内联JavaScript,绑定到某个事件。
  2. 相同,但显式返回一个值,就像任何其他JavaScript函数一样。这可能会影响行为,例如,如果函数返回false,则停止正常事件处理。
  3. 只需在您正在呼叫的功能中写下位置值。
  4. 但是,#3有点棘手,因为一个没有明确返回值的函数返回undefined,这取决于上下文,可能不是合理的事情要做。在这种情况下,您可能希望显式返回true以保持清晰。