2012-10-10 195 views
17

朋友我来了一些问题。以前一切正常。但我不能纠正为什么它开始给我这样的错误。
这里是我的JavaScript代码:Javascript类型错误:xxx不是函数

function newSupplier() { 
    $('div#AddSupplier div.msg').html('').hide(); 
    $('div#AddSupplier div.loader').show(); 
    registerSupplier($('div#AddSupplier table.frm :input').serialize()).done(function (a) { 
     if (a.Msg) { 
      $('div#AddSupplier div.msg').html(a.Msg).removeClass('success').addClass('error').fadeIn(); 
     } 
     else if (a.supid) { 
      $('div#AddSupplier div.msg').html('Supplier <span class="l2">' + a.supid + '</span> Registered').removeClass('error').addClass('success').fadeIn(); 
      $('div#AddSupplier table.frm :input').val(''); 
     } 
    }).always(function() { 
     $('div#AddSupplier div.loader').hide(); 
    }).fail(function() { 
     $('div#AddSupplier div.msg').html(errMsgNet).removeClass('success').addClass('error').fadeIn(); 
    }); 
} 

这里是registerSupplier()函数的代码:

function registerSupplier(dataToPost) { 
    return $.ajax({ 
     type: "POST", 
     url: jsonpath + 'Json.ashx?method=RegisterSupplier', 
     data: dataToPost 
    }); 
} 

这里是完整的JS文件:http://preview.myignou.com/Docs/jScript.js

相关HTML

<div id="ViewOrder"> 
    <h2>View Order Details</h2> 
    <div class="tab-content"> 
     <table class="frm"> 
     <tr> 
      <td><label>Enter Order Number</label></td> 
      <td><input type="text" name="orderNumber" onkeyup="$('#ViewOrder>div>div').fadeOut();" /><input type="button" class="but1 m-side" value="OK" onclick="LoadMaterialOrder();"/></td> 
      <td> 
       <div class="process">&nbsp;</div> 
      </td> 
     </tr> 
     </table> 
     <div> 
     <div class="border shadow m-tb"> 
      <h2 class="header">Order Details</h2> 
      <div id="orderDetails" class="tab-content"> 
       <table class="frm"> 
        <tr> 
        <td><label>Supplier</label></td> 
        <td><select id="newSupplier" name="supplier"></select></td> 
        <td class="r-align"><input type="button" value="Load Suppliers" onclick="loadSuppliers('#newSupplier')" /></td> 
        </tr> 
        <tr> 
        <td><label>Order Date</label></td> 
        <td><input type="text" name="orderDate" /></td> 
        </tr> 
        <tr> 
        <td><label>Delivery Date</label></td> 
        <td><input type="text" name="deliveryDate" /></td> 
        </tr> 
        <tr> 
        <td><label>Cancel Date</label></td> 
        <td><input type="text" name="cancelDate" /></td> 
        </tr> 
        <tr> 
        <td><label>Payment Due Mark</label></td> 
        <td><input id="payDue2" type="checkbox" name="isPayDue" /><label for="payDue2">Yes</label></td> 
        </tr> 
        <tr> 
        <td><label>Remember Mark</label></td> 
        <td><input id="remark2" type="checkbox" name="isMarked" /><label for="remark2">Yes</label></td> 
        </tr> 
       </table> 
      </div> 
      <table class="footer-buttons"> 
       <tr> 
        <td> 
        <div class="msg"></div> 
        <div class="loader" style="display:none;"><img alt="loader" src="CSS/Images/loader.gif" /></div> 
        </td> 
        <td><input type="button" class="but1 sub-but" value="Save Changes" onclick=""/><input type="reset" value="Reset" /></td> 
       </tr> 
      </table> 
     </div> 
     <br /> 
     <div class="border shadow m-tb"> 
      <h2 class="header">Payment Records</h2> 
      <div id="paymentHistory" class="tab-content"> 
       <table class="tab pay-his"> 
        <tr class="th"> 
        <td></td> 
        <td>Trans#</td> 
        <td>Date</td> 
        <td>Comment</td> 
        <td>Type</td> 
        <td>Credit</td> 
        <td>Debit</td> 
        <td>Balance</td> 
        <td>Associated Agent</td> 
        </tr> 
        <tr> 
        <td><input type="radio" name="paySelect" /></td> 
        <td>101-1</td> 
        <td>12-12-12</td> 
        <td>Abclk lask aa</td> 
        <td>Credit</td> 
        <td>500</td> 
        <td></td> 
        <td>500.00</td> 
        <td>Shashwat Tripathi</td> 
        </tr> 
        <tr> 
        <td><input type="radio" name="paySelect" /></td> 
        <td>101-2</td> 
        <td>12-12-12</td> 
        <td>Shashwat Tripathi</td> 
        <td>Debit</td> 
        <td></td> 
        <td>500</td> 
        <td>500.00</td> 
        <td>Sudhir</td> 
        </tr> 
        <tr> 
        <td><input type="radio" name="paySelect" /></td> 
        <td>101-3</td> 
        <td>12-12-12</td> 
        <td>Shashwat Tripathi</td> 
        <td>Credit</td> 
        <td>500</td> 
        <td></td> 
        <td>500.00</td> 
        <td>Sudhir Gaur</td> 
        </tr> 
       </table> 
       <br /> 
       <input type="button" class="but2" value="Edit" 
        onclick="$('#ViewOrder #payEdit').slideDown(function() { $('html, body').animate({ scrollTop: $('#paymentHistory').offset().top-20 }, 500); });" /><input type="button" class="but2 m-side" value="Delete" /> 
       <div id="payEdit" class="border m-tb shadow" style="display:none;"> 
        <h2 class="header">Edit Payment</h2> 
        <div class="tab-content"> 
        <table class="frm"> 
         <tr> 
          <td><label>Date</label></td> 
          <td><input type="text" name="date" placeholder="dd-mm-yy"/></td> 
         </tr> 
         <tr> 
          <td><label>Type</label></td> 
          <td> 
           <select name="type"> 
           <option>Credit</option> 
           <option>Debit</option> 
           <option>Expense</option> 
           </select> 
          </td> 
         </tr> 
         <tr> 
          <td><label>Amount</label></td> 
          <td><input type="text" name="amount" placeholder="धनराशी..." /></td> 
         </tr> 
         <tr> 
          <td><label>Comment</label></td> 
          <td><textarea name="comment" rows="4" cols="10"></textarea></td> 
         </tr> 
         <tr> 
          <td></td> 
          <td><input type="button" class="but1" value="Save Changes" /><input type="button" class="but2 m-side" onclick="$('#payEdit').slideUp();" value="Cancel" /></td> 
         </tr> 
        </table> 
        </div> 
       </div> 
       <br /> 
       <h2>Register New Payment</h2> 
       <hr /> 
       <div id="newMatOrderPayment"> 
        <table class="frm"> 
        <tr> 
         <td><label>Date</label></td> 
         <td><input type="text" name="date" placeholder="dd-mm-yy" /></td> 
        </tr> 
        <tr> 
         <td><label>Type</label></td> 
         <td> 
          <select name="type"> 
           <option>Credit</option> 
           <option>Debit</option> 
           <option>Expense</option> 
          </select> 
         </td> 
        </tr> 
        <tr> 
         <td><label>Amount</label></td> 
         <td><input type="text" name="amount" placeholder="धनराशी..." /></td> 
        </tr> 
        <tr> 
         <td><label>Comment</label></td> 
         <td><textarea name="comment" rows="4" cols="10"></textarea></td> 
        </tr> 
        </table> 
       </div> 
      </div> 
      <table class="footer-buttons"> 
       <tr> 
        <td> 
        <div class="msg"></div> 
        <div class="loader" style="display:none;"><img alt="loader" src="CSS/Images/loader.gif" /></div> 
        </td> 
        <td><input type="button" class="but1" value="Register Payment" onclick=""/><input type="button" class="but2" onclick="$('#NewMatOrderPayment :text').val('');" value="Reset" /></td> 
       </tr> 
      </table> 
     </div> 
     </div> 
    </div> 
</div> 
<div id="AddSupplier"> 
    <h2>Register New Suppiler</h2> 
    <div class="tab-content"> 
     <table class="frm"> 
     <tr> 
      <td><label>Supplier ID</label></td> 
      <td><input type="text" name="supId" /></td> 
     </tr> 
     <tr> 
      <td><label>Contact Number</label></td> 
      <td><input type="text" name="contact" /></td> 
     </tr> 
     <tr> 
      <td><label>Address</label></td> 
      <td><textarea name="address" cols="10" rows="4"></textarea></td> 
     </tr> 
     <tr> 
      <td><label>Email address</label></td> 
      <td><input type="text" name="email" /></td> 
     </tr> 
     <tr> 
      <td><label>City</label></td> 
      <td><input type="text" name="city" /></td> 
     </tr> 
     </table> 
    </div> 
    <table class="footer-buttons"> 
     <tr> 
     <td> 
      <div class="msg"></div> 
      <div class="loader" style="display:none;"><img alt="loader" src="CSS/Images/loader.gif" /></div> 
     </td> 
     <td><input type="button" class="but1 sub-but" value="Register" onclick="newSupplier();"/><input type="reset" value="रीसेट" /></td> 
     </tr> 
    </table> 
</div> 

如果我是ca直接从FF和Firebug控制台直接使用此函数,然后调用它。
但在点击链接,我得到错误TypeError: newSupplier is not a function

请问我如果u需要额外的代码。

+0

从显而易见的地方开始:你确定你已经将该脚本添加到了页面中,并且确定它在你尝试调用'newSupplier();'之前已经加载了吗?也许张贴您的HTML页面,如果它不太长。 – JcFx

+1

你能否提供html代码,也许你有一个id * newSupplier *的元素? –

+0

是@JCFx。我非常确定。因为我已经将所有javscript放在一个文件中。所有其他功能正在被调用。函数'newSupplier()'可以从FF和萤火虫控制台调用,并且也出现在Firebug的intellisense中。 – shashwat

回答

22

您的html代码中的第一个选择标签有ID newSupplier就像函数的名称一样。一些浏览器可以通过在js代码中指定ID来访问节点元素,然后定义的函数被DOM中的元素覆盖。

您需要重命名函数名称或元素ID。

+2

FYI的事实,我只是遇到了类似的问题,但在我的情况下,我有一个var(而不是函数)与HTML div id具有相同的名称。 – bdf

相关问题