尝试在javascript中调用函数

尝试在javascript中调用函数,javascript,Javascript,这是我的代码,我需要做的就是调用一个函数,将内容写入动态div <script language='javascript' type='text/javascript'> function getComments(id) { alert(id); } var resultSet=""; function CreateDiv() { resultSet+="<br/><div id='"+rows.data[i].id+"'></div><sc

这是我的代码,我需要做的就是调用一个函数,将内容写入动态div

<script language='javascript' type='text/javascript'> function getComments(id) { alert(id); } var resultSet=""; function CreateDiv() { resultSet+="<br/><div id='"+rows.data[i].id+"'></div><script language='javascript' type='text/javascript'> getComments("+rows.data[i].id+"); <\/script>"; } window.onload=CreateDiv; </script> 函数getComments(id) { 警报(id); } var resultSet=“”; 函数CreateDiv() { resultSet+=“
getComments(“+rows.data[i].id+”)”; } window.onload=CreateDiv; 根本没有调用函数getComments


我在这里遗漏了什么

这里有一些问题

  • 您正在引用
    ,但没有在任何地方定义它,这将导致异常
  • 假设您在未显示的地方定义了
    ,代码只是创建一个包含
    脚本
    标记的字符串,并将该字符串放入
    结果集
    。要使脚本标记内的代码运行,必须在某些元素上将
    resultSet
    分配给
    innerHTML
  • 在生成的脚本中对
    getComments
    的调用中有一个额外的
  • 分别:您的
    id
    值将显示为数字(这取决于您将它们传递到
    getComments
    中,并且周围没有引号)。请注意,在HTML5中允许使用以数字开头的
    id
    值,但在早期版本的HTML和CSS中不允许,因此最好避免使用


    当然,有一个更好的方法去做你真正想做的事情,你可以考虑一个单独的问题来概括目标,你是如何接近它的,并且要求其他的选择。

    <这里有一些问题。

  • 您正在引用
    ,但没有在任何地方定义它,这将导致异常
  • 假设您在未显示的地方定义了
    ,代码只是创建一个包含
    脚本
    标记的字符串,并将该字符串放入
    结果集
    。要使脚本标记内的代码运行,必须在某些元素上将
    resultSet
    分配给
    innerHTML
  • 在生成的脚本中对
    getComments
    的调用中有一个额外的
  • 分别:您的
    id
    值将显示为数字(这取决于您将它们传递到
    getComments
    中,并且周围没有引号)。请注意,在HTML5中允许使用以数字开头的
    id
    值,但在早期版本的HTML和CSS中不允许,因此最好避免使用


    <> P.>几乎可以肯定的是,有一个更好的方法来做你真正想做的事情,你可以考虑一个单独的问题来概括这个目标,到目前为止你是如何接近它的,并寻求替代方案。

    < P>我建议你在调试它时把代码分解成步骤。特别是在您填充resultSet的位置。在每个加号处分解它。然后,您可以逐步浏览它并查看它是如何填充的

    resultSet+="<br/><div id='";
    resultSet+=rows.data[i].id;
    

    resultSet+=”
    我建议您在调试时将代码分解为多个步骤。特别是在填充resultSet的位置。在每个加号处将其分解。然后您可以一步一步地查看它是如何填充的

    resultSet+="<br/><div id='";
    resultSet+=rows.data[i].id;
    

    resultSet+=”
    尝试用以下内容替换
    createDiv
    函数:

    function CreateDiv(){
        resultSet += "<br/><div id='"+rows.data[i].id+"'></div>" + getComments(rows.data[i].id);
    }
    
    函数CreateDiv(){
    结果集+=“
    ”+getComments(rows.data[i].id); }

    它应该可以完美地工作。

    尝试用以下内容替换
    createDiv
    函数:

    function CreateDiv(){
        resultSet += "<br/><div id='"+rows.data[i].id+"'></div>" + getComments(rows.data[i].id);
    }
    
    函数CreateDiv(){
    结果集+=“
    ”+getComments(rows.data[i].id); }


    它应该可以完美地工作。

    应该调用
    getComments
    的位置是哪里??不是。上面的代码块写在标记中,所以只要主体加载getComments,就应该调用它,但是它不会在create div中的所有变量中被调用。不要让senseI格式化JavaScript代码。现在很明显,为什么不调用
    getComments
    函数。提示:检查引号。我看不到正在调用的函数。请说明在哪里。fn名称只在一个字符串中传递,该字符串被分配给一个无处使用的变量。其中
    getComments
    应该被调用吗??不是。上面的代码块写在标记中,所以只要主体加载getComments,就应该调用它,但是它不会在create div中的所有变量中被调用。不要让senseI格式化JavaScript代码。现在很明显,为什么不调用
    getComments
    函数。提示:检查引号。我看不到正在调用的函数。请说明在哪里。fn名称仅在字符串中传递,该字符串被分配给一个变量,该变量不在任何地方使用。
    resultSet
    定义为:
    var resultSet=“”(上面
    CreateDiv
    resultSet
    已定义:
    var resultSet=”“
    (上图
    CreateDiv
    )“另外,我在质疑resultSet中的最终结果是否正确”是的,结果字符串将是“”,因为在JavaScript中转义斜杠只会导致斜杠。这是防止HTML解析器在字符串中看到“”并过早终止该字符串出现的脚本块的常用方法。此外,我还质疑resultSet中的最终结果是否正确“是的,结果字符串将是“”,因为在JavaScript中转义斜杠只会导致斜杠。这是防止HTML解析器在字符串中看到“”并提前终止显示该字符串的脚本块的常用方法。这是否真的有效,@Sandhurst?我以为你仍然会遇到T.J.在回答中指出的未定义变量的问题。我不明白为什么有人否决了唯一直接且可接受的答案。你最终会在
    结果集中出现字符串“未定义”(因为
    getComments
    不返回值,所以调用它的结果是
    undefined
    )。最好单独调用它