我在从链接中提取价值时遇到了麻烦。这是一个 CSS 格式的页面,我真的更喜欢使用 a 而<a>
不是<button>
.
<button value="1" onclick="showDetails(this.value)">This works</button>
<a value="2" onclick="showDetails(this.value)">This doesn't work</a>
};
xmlhttp.open("GET","getdetails.php?q="+str,true);
xmlhttp.send();
Run Code Online (Sandbox Code Playgroud)
我怎样才能获得<a>
点击它的价值而不是让它去某个地方?
只有少数几个元素,如<input>
s、<textarea>
s 和<button>
s 可以具有value
属性:
console.log(
document.querySelector('a').value
);
Run Code Online (Sandbox Code Playgroud)
<a value="val">a</a>
Run Code Online (Sandbox Code Playgroud)
如果必须使用该value
属性,请使用该getAttribute
方法而不是点表示法:
console.log(
document.querySelector('a').getAttribute('value')
);
Run Code Online (Sandbox Code Playgroud)
<a value="val">a</a>
Run Code Online (Sandbox Code Playgroud)
另一种选择是改用数据属性,这在使用value="
s 时比s更合适<a>
:
console.log(
document.querySelector('a').dataset.value
);
Run Code Online (Sandbox Code Playgroud)
<a data-value="val">a</a>
Run Code Online (Sandbox Code Playgroud)
(如果可能的话,还要确保使用 Javascript 正确附加您的事件处理程序 - 内联处理程序通常被认为是非常糟糕的做法 - 尝试使用addEventListener
)
要使用addEventListener
,请选择您的a
,然后调用addEventListener
它。例如,如果你<a>
有一个id
的details
:
const details = document.querySelector('#details');
details.addEventListener('click', () => {
showDetails(details.dataset.value);
});
function showDetails(str) {
console.log('showing details for ' + str);
}
Run Code Online (Sandbox Code Playgroud)
<a id="details" data-value="thevalue">click for details</a>
Run Code Online (Sandbox Code Playgroud)