-3

我有 2 个问题

  1. this指的是什么?我知道它是相关对象的某种容器。

  2. 由于缺乏更好的选择,我正在尝试使用表单传递变量。我的想法是在 , 中有一个<a onclick>andonclickthis.form.submit();

<form action="/justtesting/" method="post">   
     <a onclick="this.form.submit();" href="">click this</a>  
     <input name="pageid" value="12" type="hidden">  
     <input name="mid" value="5" type="hidden">  
</form>

这样我就传递了变量。

我以前见过这个,但<a>他们没有使用按钮。

4

7 回答 7

2

简短的回答: this指的是调用当前正在执行的函数的对象

长答案: https ://developer.mozilla.org/en/JavaScript/Reference/Operators/this

于 2012-07-23T17:39:21.907 回答
1

this 指的是当前元素,在你的情况下它指的是A标签

如果你使用 <Button type="Submit">click this</Button>,那么它可以在没有 javascript 的情况下工作

如果你使用A标签,那么不要留下 href 属性,因为它可能会导致问题

<a href="javascript:this.form.submit()">click this</a>

于 2012-07-23T17:36:22.120 回答
1

内联绑定(例如元素onclickonload属性)内部,this指的是元素本身。因此,例如:

<a href="http://google.com" onclick="alert(this.href);">Click me</a>
<!-- Alerts "http://google.com" -->

<img src="foo.jpg" width="50" height="50" onload="alert(this.width+'x'+this.height);" />
<!-- Alerts "50x50" -->

因此,通过说this.form您是在说“获取该元素所属的表单(如果有)”,那么您就是在调用表单元素的submit()方法。

于 2012-07-23T17:37:17.637 回答
1

当传递给事件时, this 指的是作为参数传递给函数的锚对象。

于 2012-07-23T17:39:16.633 回答
1
  1. 在事件处理程序的情况下,“this”指的是有问题的目标事件

例子:

<div onclick="console.log(this) id="me">click me</div>   

2. 在对象的情况下,它指的是有问题的对象

例子:

x = { hi: function(){console.log("Hi "+this.name)}};
x.name= "Bill";
x.hi(); // Hi Bill

3 这两种行为都可以通过调用所谓的绑定来改变,可以使用绑定、应用或调用(此处实现绑定)

var bind = function(obj, fn){ return function(){ return fn.apply(obj, arguments)}
y.name = "Joe";
x.hi = bind(y, x.hi);
x.hi(); //Hi Joe

4 不指定时this指的是一个全局对象,在兼容模式下相当于浏览器中的window,在所谓严格模式下相当于undefined。

于 2012-07-23T17:46:08.183 回答
1

没有任何上下文的“this”总是指 -window- 对象。

var test = 123;

alert(test); // 123
alert(this.test); // 123

你会希望有某种 jQuery click 事件,搜索你想与表单提交一起传递的任何值。

于 2012-07-23T17:33:20.933 回答
0

在正常的 Javascript 事件中,this指的是处理程序绑定到的元素。但是,如果您的事件attachEvent在 IE 中是绑定的,this则指的是窗口。在您的代码中,this指的是单击的锚标记。以下是在 jQuery 中正确实现所需功能的方法:

$("a").click(function() {
     $(this).closest("form").submit();
 });
于 2012-07-23T17:38:17.037 回答