JSON.stringify 在 js 中

JSON.stringify in js

如何使用以下代码从外部 JS 获取 <div> id 和标题的引用:

function recordedEvent() {    
    var v_Id = $(this).attr('Id');
    var v_Title = $(this).attr('Title');
    var o = { Title : v_Title, ObjectId : v_Id };
    alert(JSON.stringify(o));
}

该函数在 HTML 中调用,其中 onclick 称为 box1()

CplTemplateSetup.js 中的代码是我想要 运行 函数从 HTML:

的地方
content_left_30_four_click_images_right_70_head_content_template.html

如有任何帮助,我们将不胜感激。


P.S.: JSON data (zip archive)

最明显的问题是回调后没有右括号..否则代码看起来不错


编辑

window.lastClickedBoxData = {}; // just reassign that within your function

window.runThisWhenClicked = function () {
    var v_Id = $(this).attr('Id');
    var v_Title = $(this).attr('Title');
    var o = { Title : v_Title, ObjectId : v_Id };
};

然后

$(".box").click(window.runThisWhenClicked);

我不认为你面临的问题对于任何不查看你的代码的人来说都是显而易见的。

您在 html 中的脚本标记内定义了一个函数,并在所单击框的 onclick 属性中调用了该函数。对于该函数,this 指的是被点击的框。从那里,您可以调用外部 js 文档中的函数。在该函数中,this 指的是 window 对象。换句话说,对于您发布的代码,$(this) 是 window 对象的 jquery 实例,它没有您要查找的属性,例如 idtitle,所以它们是空白的。

要了解我在说什么,请打开控制台并将以下代码行添加到您的每个函数中:

console.log(this);

如果您在执行此操作时遇到问题,以下代码应该也能正常工作,但它不利于调试:

alert(this);

您需要将所有代码都放在 html 脚本标记或外部文档中。此外,您不应使用 html 中的 onclick 定义在单击事件期间调用的函数。最好使用 javascript 或 jquery 来做到这一点,这样您的 javascript 就与您的 html.

完全分开了

编辑:你不应该用答案更新你的问题。您应该使用此信息编辑原始问题,以便遇到类似问题的任何人都可以找到解决方案。我会直接对答案发表评论,但我没有这样做的声誉。