Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript this.value不';不行?_Javascript - Fatal编程技术网

javascript this.value不';不行?

javascript this.value不';不行?,javascript,Javascript,对不起,我问了那个愚蠢的问题:但是我做错了什么 html: 谢谢 此的值取决于调用它所在的函数的方式 当浏览器从事件触发器调用onclick函数时,这是输入 调用prompt()时,因为您没有提供上下文,也没有处于严格模式,这是窗口 您需要显式地传递该值 onclick="prompt.call(this)" 更好的是,首先不要使用内部事件属性。它们将HTML和逻辑混合在一起,并有一个完整的Gotcha集合 那你还有第二个问题 Div元素没有值。只有输入和其他表单控件可以。您需要使用.getA

对不起,我问了那个愚蠢的问题:但是我做错了什么

html:


谢谢

此的值取决于调用它所在的函数的方式

当浏览器从事件触发器调用onclick函数时,
这是输入

调用
prompt()
时,因为您没有提供上下文,也没有处于严格模式,
这是
窗口

您需要显式地传递该值

onclick="prompt.call(this)"
更好的是,首先不要使用内部事件属性。它们将HTML和逻辑混合在一起,并有一个完整的Gotcha集合

那你还有第二个问题

Div元素没有值。只有输入和其他表单控件可以。您需要使用
.getAttribute(“value”)
而不是
.value
…但这仍然会使HTML无效(还有不适当的-div元素不是设计用来与之交互的,它们没有给出应该单击它们的视觉指示,并且如果用户不使用鼠标或其他定点设备,它们也不会接收到焦点)

您应该使用一个设计用于与之交互的控件

最后,
prompt
是一个内置函数,因此您应该避免覆盖它,而是选择一个不同的名称

函数显示值(事件){
var值=此值;
document.body.appendChild(document.createTextNode(值));
}
document.querySelector(“按钮”).addEventListener(“单击”,显示值);
test
首先,
没有
value
属性,因此
.value
不起作用。其次,不应该使用内联JavaScript

你应该做的是:

<div id="test" value="test">test</div>
如果必须使用内联事件,则需要将元素传递给
prompt()
函数。问题是它不知道这
是什么。这就是为什么要如上所示绑定事件。无论如何,您也可以执行以下操作:

<div onclick="prompt(this)" value="test">test</div>
然后:


Div没有value属性

如果需要在div元素中获取值,可以通过innerHTML属性来实现

function prompt() {

    var error = this.innerHTML; // OR this.getAttribute("value");

}

div
s没有
value
s,它们有
textContent
s。而且,这不是jQueryRemember,因为“prompt”是javascript中已经存在的函数。
$(function(){
    $('#test').click(function(){
        // You need to get the attribute from the element
        var error = $(this).attr('value');
    });
});
<div onclick="prompt(this)" value="test">test</div>
function prompt(ele){
    // You can't use `.value` because `<div>`s
    // don't have a value property
    var error = ele.getAttribute('value');
}
<div id="test" data-value="test">test</div>
$(function(){
    $('#test').click(function(){
        var error = $(this).data('value');
    });
});
function prompt() {

    var error = this.innerHTML; // OR this.getAttribute("value");

}