JavaScript ondblclick无效

时间:2015-03-02 04:35:01

标签: javascript html

双击时,我想要清除文本输入框(单个文本输入)。

这是HTML

</div>
<div class="form-group">
<label for="green" class="control-label green col-md-2">Green:</label>
<div class="col-md-2">
<input type="text" id="green" ondblclick="Clear();" class="form-control"/>
</div>

和JavaScript

    function Clear()
    {    
    this.value="";
    }

它似乎没有工作,有谁知道什么是错的?

5 个答案:

答案 0 :(得分:1)

this在这种情况下不起作用,因为它引用窗口对象而不是docuement.getElementById

&#13;
&#13;
function Clear()
    {    
    document.getElementById('green').value="";
      console.log(this);
     // this..value="";
    }
&#13;
</div>
<div class="form-group">
<label for="green" class="control-label green col-md-2">Green:</label>
<div class="col-md-2">
<input type="text" id="green" ondblclick="Clear();" class="form-control"/>
</div>
&#13;
&#13;
&#13;

或者您可以将元素传递给Clear函数,如下所示:

&#13;
&#13;
function Clear(element)
    {    
       element.value = "";
    }
&#13;
</div>
<div class="form-group">
<label for="green" class="control-label green col-md-2">Green:</label>
<div class="col-md-2">
<input type="text" id="green" ondblclick="Clear(this);" class="form-control"/>
</div>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

您可以使用以下代码。

HTML

<div class="form-group">
<label for="green" class="control-label green col-md-2">Green:</label>
<div class="col-md-2">
  <input type="text" id="green" ondblclick="Clear(this);" class="form-control" />
</div>
</div>

JS

function Clear(x) {
  x.value = "";
}

希望这会对你有所帮助。

答案 2 :(得分:0)

试试这个:

function Clear() {    
    var _green = document.getElementById(this.event.target.id);
    _green.value="";
}

在上面的代码中,我们使用this.event.target.id检测被调用函数的ID。获取ID后,使用document.getElementById()获取DOM元素并将值设置为空白。

答案 3 :(得分:0)

您需要将this作为参数传递给函数:

&#13;
&#13;
		function Clear(that) {
		  that.value = "";
		}
&#13;
<div class="form-group">
  <label for="green" class="control-label green col-md-2">Green:</label>
  <div class="col-md-2">
    <input type="text" id="green" ondblclick="Clear(this);" class="form-control" />
  </div>
</div>
&#13;
&#13;
&#13;

答案 4 :(得分:0)

为了在不更改函数内部任何内容的情况下完成此工作,您可以像这样绑定元素:

... ondblclick="Clear.call(this);" ...

Clear()内,您将使用this引用该元素。

加成

你也可以传递这样的事件:

... ondblclick="Clear.call(this, event);" ...

然后,您的功能将如下所示:

function Clear(event)
{
   // ...
}

替代地

您还可以单独注册事件处理程序:

document.getElementById('green').addEventListener('dblclick', Clear);