代码之家  ›  专栏  ›  技术社区  ›  Manu Chadha

对函数调用使用()时出错

  •  0
  • Manu Chadha  · 技术社区  · 5 年前

    我在试验 nicEdit ,一个 WYSIWYG http://nicedit.com/ )

    它很容易使用。只需在代码中添加以下两行

    <script src="http://js.nicedit.com/nicEdit-latest.js" type="text/javascript"></script>
    <script type="text/javascript">bkLib.onDomLoaded(nicEditors.allTextAreas);</script>
    

    html

    <!DOCTYPE html>
    <html>
    
    <head>
        <!-- add list of tags here in meta data -->
        <meta name="viewport" content="width=device-width" />
        <link rel="stylesheet" type="text/css" href="index.css">
    
        <title>some title</title>
        <script src="jquery/jquery-3.3.1.min.js"></script>
    </head>
    
    <body>
    
        <textarea id="d" type="text"></textarea>
        <textarea id="s" type="text"></textarea>
        <textarea id="h" type="text"></textarea>
    
        <script src="http://js.nicedit.com/nicEdit-latest.js" type="text/javascript"></script>
        <script type="text/javascript">bkLib.onDomLoaded(nicEditors.allTextAreas)</script>
        <-- ISSUE HERE IF I USE () -->
    </body>
    
    </html>
    

    似乎我可以将配置选项传递给编辑器- http://wiki.nicedit.com/w/page/515/Configuration%20Options

    allTextAreas 通过将配置对象传递给它。但当我打电话给 所有文本区域 通过添加 ({someProperty:someValue}) ,控制台出错

    nicEdit-latest.js:8 Uncaught TypeError: bkLib.domLoad[i] is not a function
        at HTMLDocument.domLoaded (nicEdit-latest.js:8)
    domLoaded @ nicEdit-latest.js:8
    

    为什么使用 ()

    1 回复  |  直到 5 年前
        1
  •  1
  •   Hao Wu    5 年前

    它看起来需要一个函数,请尝试包装它:

    <script type="text/javascript">bkLib.onDomLoaded(() => nicEditors.allTextAreas({someProperty: someValue}))</script>
    

    解释

    bkLib.onDomLoaded 接受回调函数。

    • nicEditors.allTextAreas

    • () => nicEditors.allTextAreas({someProperty: someValue}) 因为它能包装 nicEditors.all文本区域 在另一个函数中,当它被调用时 {someProperty: someValue}

    • nicEditors.allTextAreas({someProperty: someValue}) 不起作用,因为它会立即调用该函数并解析返回的内容并将其传递给 已加载bkLib.onDomLoaded