我有一个javascript函数,我想在确认为真时调用。我正在使用document.write,因为源文档是.js文件,而不是html。
在真实条件执行之前,我希望用户确认他们确定要重置计数器。
我有两次尝试 - 第一次尝试返回true为false,但没有在真实条件下调用resetCookie()函数。
我认为,第二次尝试在语法上是不正确的,因为它似乎什么都不做。
第一次尝试:
document.write('<a href="" onclick="return alert(confirm(\'sure?\'));{resetCookie()}{};"><i>Reset counter</i></a>');
第二次尝试:
document.write("<a href='javascript: if (confirm('Continue?')) { alert('You chose true') } else { alert('You chose false.') }; void('')'>Reset counter</a>");
谢谢您的帮助。
答案 0 :(得分:3)
为什么不直接使用jscript confirm()函数?
if (confirm("sure?") == true){
resetCookie();
}
顺便说一下,你的A标签是错误的(我现在忽略你在运行时不能使用document.write):
document.write('<a href="" onclick="if(confirm(\'sure?\')){resetCookie()};return false;"><i>Reset counter</i></a>');
答案 1 :(得分:1)
你应该注意你的引用风格 - 如果你打开单引号'
你不能再逃避使用它,试试这个:
document.write("<a href='javascript:(confirm(\"continue?\") ? alert(\"true\") : alert(\"false\"))'>Reset counter</a>");
答案 2 :(得分:1)
假设你将这个JavaScript文件内联,并假设这个代码立即运行(例如,它不在页面加载后触发的函数调用中),你可以使用document.write
就好了,尽管一般我d避免它。
我还避免在DOM0(onclick
- 样式)处理程序中放置任何类型的逻辑;相反,调用一个函数:
document.write('<a href="" onclick="return confirmLink();"><i>Reset counter</i></a>');
function confirmLinkClick() {
if (confirm("sure?")) {
resetCookie();
}
return false;
}
理想情况下,完全避免使用DOM0处理程序并使用现代方法来连接点击,因为使用现代方法可以避免创建全局函数。这意味着使用addEventListener
(在现代浏览器上)或attachEvent
(在IE8及更早版本上),或者更好地使用一个好的库来避免担心这些差异。