未定义的加载不工作不是函数

Load not working undefined is not a function

本文关键字:函数 工作 未定义 加载      更新时间:2023-09-26

我有一个jquery加载的问题。下面的函数正在工作。当我用onclick="load_content('new')"

直接从html调用它时

但它不会工作,如果我从另一个Javascript函数调用它。它给出了错误TypeError: undefined is not a function

function load_content(which) {
    $('#content').load('html/' + which + '.html');
}

使用console.log,我可以看到函数被输入,因此它必须是函数中的第一行有问题。

来自菜单的调用在下面的html

中工作
<div class="collapse navbar-collapse" id="main-nav">
    <div class="nav-menu">
        <ul class="nav main-nav">
            <li class="item-101  active"><a class="scroll" href="#New" onclick="load_content('new')"><span>NEUES PROJEKT</span></a></li>
            <li class="item-102"><a class="scroll" href="#Overview" onclick="load_content('overview')"><span>PROJEKTÜBERSICHT</span></a></li>
            <li class="item-103"><a class="scroll" href="#Settings" onclick="load_content('settings')"><span>EINSTELLUNGEN</span></a></li></ul>
        </div>
    </div>
</div>

这里不工作:

    var dialogNew = function()
    {
        BootstrapDialog.closeAll();
        var fs = require('fs');
        fs.opensync(newPath, 'r');
        load_content('new');
    };
    setTimeout(dialogNew, 2500);

我错过了什么?

虽然它是与点击一起工作,但它也显示了以下错误Uncaught TypeError: Cannot read property 'Constructor' of undefined

这里更精确的误差

TypeError: undefined is not a function
    at dialogNew (eval at <anonymous> (file:///Users/proslav/Library/Developer/Xcode/DerivedData/trackingCore-ecxfviftqracjxhimcuhhhvyddso/Build/Products/Debug/trackingCore.app/Contents/Resources/timeBroFront.app/Contents/Resources/app.nw/js/jquery-1.10.2.min.js:3:4994), <anonymous>:37:7)

发现错误。这是之前的代码和我的代码的组合。我必须在调试方面变得更好。答案是重新定位load_content函数并替换fs.opensync

我想,

你在一个js文件中调用函数,而这个函数在另一个js文件中。请确保调用js是在包含该定义的js文件之后加载的。

如果你正在使用jQuery,为什么要注意使这个更优雅的方式?
我的意思是通过选择器创建点击处理程序来分离js逻辑。


$(function() {
  
  $('.load-content').on('click', function(e){
    e.preventDefault();
    $('#content').load($(this).attr('href'));
    return false;
  });
  
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<a href="html/new.html" class="load-content">new</a>
<a href="html/old.html" class="load-content">old</a>
  
<div id="content"></div>

    $(function() {
      
      $('.load-content').on('click', function(e){
        e.preventDefault();
        $('#content').load($(this).data('url'));
        return false;
      });
      
    });
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <a href="" data-url="html/new.html" class="load-content">new</a>
    <a href="" data-url="html/old.html" class="load-content">old</a>
      
    <div id="content"></div>