1

我试图在单击链接时调用 javascript 函数。实际上,我想在使用 post 方法单击链接时提交表单,因此我正在尝试执行以下操作-

<a href="javascript:submitCategory(this)" >Handicrafts</a>

在javascript中

function submitCategory(varthis)
{   
    alert(varthis.value);
}

我有几个重要的问题: 1>当我点击链接时,函数 submitCategory 被调用了两次。经过大量分析后发现我包含了两个 js 文件,删除其中一个使得该函数只被调用一次。意思是当我包括在内时

<script type ="text/javascript" src="jquery.js"></script>
    <script type ="text/javascript" src="cWed.js"></script>

submitCategory 函数被调用两次

当我删除其中一个并包括

<script type ="text/javascript" src="jquery.js"></script>

submitCategory 函数只被调用一次。

为什么会这样?

2> alert(thisvar.value) 应该返回 Handicrafts 但它返回 undefined。为什么会这样?

3> href="javascript:submitCategory(this)" 究竟是什么意思?我在任何教程中都没有遇到过这个。包括这里应该是指元素“a”对吗?

4

2 回答 2

0
  1. 由于您尚未发布内容,cWed.js因此很难知道为什么要重复提交,但我的猜测是它包含click自己的处理程序,它复制了默认处理程序。

  2. varthis.value不起作用的原因是因为.value仅用于<input><select>元素,它包含用户输入或从菜单中选择的值。要获取元素的文本内容,您应该使用.innerHTML.

  3. 以 开头的 URIjavascript:意味着浏览器不应从网络位置获取页面,而应在该前缀之后执行 Javascript 代码。它不是官方认可的 URI 方案(有一个 Internet-Draft RFC,但它在 2 年前过期),但所有浏览器都支持它。

  4. 当代码从javascript:URI 执行时,this是窗口,而不是被点击的元素。您需要使用onclick处理程序来this设置元素。

以下作品:

<a href="javascript:void(0)" onclick="submitCategory(this); return false;" >Handicrafts</a>

function submitCategory(varthis)
{   
    alert(varthis.innerHTML);
}

小提琴

于 2013-07-04T19:34:53.920 回答
0

1. 你不需要使用限定符 'javascript:'
2. 当你在 html 中挂钩事件时,总是尝试像event_handler(event). 注意:event 是事件对象。而不是这里的一些随机变量。您可以在网络上的许多地方阅读有关它的更多信息。在您的情况下varthis是事件对象。要访问此元素使用varthis.target然后获取其内部 html,您可以使用varthis.target.innerHTML
3. 当调用该函数时,您必须通过事件标记显式获取调用元素的 html 内容,或者只使用 jquery。您不能以您认为您现在正在传递的方式传递变量。
4. 如果您实际上是在尝试提交表单,我建议在脚本而不是 HTML 中挂钩 onSubmit 事件,并将您的自定义表单提交代码放在那里。如果你不需要在表单提交中做任何自定义,你可以将目标服务器函数的 url 放在action表单的属性中。

示例代码:

<form>
    <a href="#" id="submitCategoryLink">Submit Category</a>
</form>
<script type="text/javascript">
    $('#submitCategoryLink').on('click', function (e) {
        alert(e.target.innerHTML)
    });
</script>
于 2013-07-04T19:05:19.960 回答