javascript - 在 document.write(' ')中返回 Javascript 函数
4 回答
你的代码:
document.write('<a HREF="javascript:return validateForm();' +
thisform + '.submit();void(0);"');
似乎不完整。如果您使用的是链接,则 href 应链接到有用的资源。如果没有,请使用按钮或其他一些 UI 对象来清楚地指示将发生什么。
使用 javascript 伪协议为 href 属性返回 false 不会执行任何操作。void 语句根本不做任何事情(这就是 void 的意义所在)。此外,void 是一个运算符,因此无需包含分组运算符 ()。
您不能使用这样的 A 元素来有条件地提交表单,您确实应该使用表单的提交事件来有条件地允许或阻止提交。你可以做:
document.write(
'<a href="http://useful.com" onclick="return validateForm(' +
thisform + ');">do stuff<\/a>');
然后在validateForm函数中,您可以有条件地调用表单的提交方法。
如果validateForm返回 false,浏览器将不会跟随链接。
一个更好的策略是将监听器放在表单上:
<form onsubmit="return validateForm(...)" ...>
如果验证失败,则返回 false 并取消提交。否则,提交将继续。
为了适当地控制表单提交,您应该有这种解决方案:
document.write('<a href="#" onclick="submitMyForm(' + thisForm + ');"');
然后有这个JS函数:
function submitMyForm(theForm) {
var y = theForm["email"].value;
if (y==null || y=="") {
alert('Please enter your email to continue.');
} else {
theForm.submit(); // will only submit the form if it's valid
}
}
为什么你有
alert("Not a valid e-mail address.");
document.location = "http://www.snarephoto.com/about/";
stopnow()
return false;
我想你应该只有..
alert("Not a valid e-mail address.");
return false;
另外, stopnow 在您的情况下会做什么?
我不知道为什么您不必在 href 中返回函数,但这确实不推荐。
我不是真的回答你的问题。但是我不知道在什么情况下真正需要使用它而不是 Javascript OOP。
我强烈建议将您的代码调整为像这样的非干扰方式。
身体:
<p><a href="#" id="myLink">Item 1</a></p>
脚本
<script type="text/javascript">
var myFunction=function(){
//do something
alert('You clicked me!');
alert('This function is inside '+this.innerHTML+' Link');
this.style.backgroundColor='Yellow';
}
document.getElementById('myLink').onclick=myFunction;
</script>
这不是直接调用函数,而是在虚拟机中创建内存中的引用(如 C 中的指针)。并且使用了最重要的 NONE EVAL,并且比 inline eval 快得多。