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