Javascript 无法将字符串作为函数参数Jquery传递

Javascript 无法将字符串作为函数参数Jquery传递,javascript,jquery,string,function,Javascript,Jquery,String,Function,我从JQuery开始。当我想在函数中传递一个字符串作为参数时,有时它不起作用,我不知道为什么 这是一个例子: $(document).ready(test()); function test() { $('path[secteur]').each(function () { if ($(this).attr('id') == ("23C01")) { id = ($(this).attr('id')); afficher(

我从JQuery开始。当我想在函数中传递一个字符串作为参数时,有时它不起作用,我不知道为什么

这是一个例子:

$(document).ready(test());

function test() {
    $('path[secteur]').each(function () {
        if ($(this).attr('id') == ("23C01")) {
            id = ($(this).attr('id'));
            afficher(id);

        }
    })
}

function afficher(mo) {
    document.getElementById("test").innerHTML = "<p id=" + mot + " onclick='tester(" + mot + ")'>  step 1</p>";

}

function tester(verbe) {
    document.getElementById(verbe).innerHTML = "step 2";
}
$(document).ready(test());
功能测试(){
$('path[secteur]')。每个(函数(){
if($(this.attr('id')==('23C01')){
id=($(this.attr('id'));
宣誓人(身份证);
}
})
}
函数附加器(mo){
document.getElementById(“test”).innerHTML=“

”; } 功能测试仪(verbe){ document.getElementById(verbe.innerHTML=“步骤2”; }

在本例中,它对“afficher”很好,但对“tester”不起作用。当我尝试单击生成的HTML时,我得到一个错误:“uncaughtsyntaxerror:missing)after参数列表”


有人知道原因吗?

如果在程序上下文中调用函数,则会有不同:

var test = 2;
test++;
test = domymath( test );
alert( test );
或者,如果通过回调函数调用函数:

var test = 2;
test++;
test = domymath( test, alert );
如果在程序上下文中调用函数,则可以将
()
中的参数/值传递给函数,但如果将函数作为回调调用,则无法传递这些参数/值。
因为对于回调函数,您只定义应该调用的函数的名称

因此,在您的情况下,请使用:

$(document).ready( test );
// calls test();

$(document).ready( function () {
      test( one, two );
});
// calls test( one, two );

如果在程序上下文中调用函数,则会有差异:

var test = 2;
test++;
test = domymath( test );
alert( test );
或者,如果通过回调函数调用函数:

var test = 2;
test++;
test = domymath( test, alert );
如果在程序上下文中调用函数,则可以将
()
中的参数/值传递给函数,但如果将函数作为回调调用,则无法传递这些参数/值。
因为对于回调函数,您只定义应该调用的函数的名称

因此,在您的情况下,请使用:

$(document).ready( test );
// calls test();

$(document).ready( function () {
      test( one, two );
});
// calls test( one, two );
  • Js端:您在函数调用中丢失了字符串的qoutes
  • Html方面:您没有属性值的转义
  • 您的所有功能都需要是全局的
  • $(document).ready(test())-
    测试
    立即执行
  • 整个代码都很糟糕

  • Js端:您在函数调用中丢失了字符串的qoutes
  • Html方面:您没有属性值的转义
  • 您的所有功能都需要是全局的
  • $(document).ready(test())-
    测试
    立即执行

  • 而且整个代码都很糟糕。

    $(文档)中删除大括号
    ()
    。使用
    $(文档).ready(测试)
    您对
    afficher()
    的声明调用参数
    mo
    ,但代码调用它
    mot
    。此代码似乎有很多错误。例如,您从未定义变量
    mot
    。您还在
    文档的ready事件(参见@Tushar的注释)之前执行
    test()
    ,因此当您调用
    afficher(id)
    时,
    id
    值中可能没有任何内容。至于错误本身,产生它的确切代码行是什么?您正在使用嵌入式JavaScript动态添加HTML。如果嵌入的JavaScript格式不正确,请查看它并了解其原因。@Pointy说了什么,您可能需要在作为字符串传递的参数中添加引号(可能是“+mo+”.NB:
    $(this.attr('id'))之前和之后的转义引号)===this.id
    ,但后者不需要函数调用,而不是jQuery在后台为前者调用的两个可见函数和多个函数。从
    $(document).ready(test());
    中删除括号
    $(document).ready(test);
    您对
    词缀()的声明
    调用参数
    mo
    ,但代码调用它
    mot
    。这段代码似乎有很多错误。例如,您从未定义变量
    mot
    。您还在
    文档
    就绪事件之前执行
    test(),因此当您调用
    afficher(id)时
    id
    值中可能没有任何内容。至于错误本身,产生错误的确切代码行是什么?您正在使用嵌入的JavaScript动态添加HTML。如果该嵌入的JavaScript格式不正确,请查看它并了解其形式可能不正确的原因。@Pointy说了什么,您可能需要在t中添加引号作为字符串传递的参数(可以是“+mo+.”前后的转义引号。NB:
    $(this).attr('id')==this.id
    ),但后者不需要函数调用,而需要jQuery在后台为前者调用两个可见的函数和多个函数。