【问题标题】:javascript onclick in html confusionhtml混乱中的javascript onclick
【发布时间】:2011-09-01 12:08:29
【问题描述】:

我正在查看一些 java 代码(它使用 playframework),它提供了一些购物车功能。html 页面包含一些 javascript(它使用 jquery),这是我很少有的东西的知识。翻看html,发现了一张这样的表格

<table>
...
<td> 
<a href="" onclick="return addItem(${item.id});">buy</a>
</td>
...
</table>

(模板使用${}通过playframework模板语言获取动态值) 在整个代码中,我能找到的唯一 addItem(itemId) 方法是在具有此签名的 ShoppingCart 类中

public void addItem(Item item) {
...
}

当我搜索 onclick 时,我找到了这个页面 onclick doc,它给出了 onclick 的语法为

onclick="SomeJavaScriptCode"

浏览所有的 javascript 代码(它使用 jquery 和 ejohn-template)我找不到像 'addItem' 这样的方法

那么,onclick 是如何工作的?它如何知道调用哪个方法?它会在整个代码(javascript 和 java)中查找匹配的方法吗?

【问题讨论】:

    标签: java javascript html onclick


    【解决方案1】:

    您的 javascript 代码中有一个 addItem 方法。 html 中的代码正在执行该方法,而不是您在 java 代码中找到的 addItem 方法。

    【讨论】:

      【解决方案2】:

      首先它只会查找 javascript 方法而不是 java 方法。其次是你可以在firebug中使用调试来到达被调用的方法。

      【讨论】:

      • 感谢萤火虫的建议。我找到了这个函数。它嵌入在模板中,而不是作为单独的 js 文件,我一直在寻找 javascripts 文件夹。
      【解决方案3】:

      比较简单。 看起来您的 Java 代码是在服务器端执行的,而 JavaScript(包括 jQuery)是在客户端执行的。因此 ${item.id} 在服务器上执行,而 onClick 在客户端执行您为其提供的任何 JavaScript 代码。

      【讨论】:

        【解决方案4】:

        我不知道playframework,但是addItem应该是javascript,public void addItem(Item item)是java代码。两者不相关

        这个addItem javascript 函数在某个地方。如果您在代码库中找不到它,您可以使用浏览器的控制台(或 Firefox 上的 firebug)查看此 javascript 函数。转到 Script 选项卡并搜索 addItem。

        【讨论】:

          【解决方案5】:

          除非通过 AJAX 或类似的方式,否则 Javascript 无法访问服务器端功能。即使这样,它也不能直接访问函数,而是访问访问该函数的页面。

          使用 firebug 或 google chrome 控制台在 Javascript 中更仔细地查看该功能。它应该在那里。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2016-12-04
            • 2015-02-26
            • 1970-01-01
            相关资源
            最近更新 更多