.text不是函数-jQuery

时间:2019-05-04 07:20:47

标签: javascript jquery html

我想获取我的td的文本,但出现此错误:$tds[2].text is not a function

console.log('td',$tds[2])的结果是:

enter image description here

$(document).ready(function() {
  $trs = $('table > tbody > tr')
  // console.log('trs',$trs)

  var items = []
  for (var $i = 0; $i < $trs.length; ++$i) {
    $tds = $trs[$i].cells

    console.log('td', $tds[2].text())

    var item = {}
    item['label'] = ''
    item['flag'] = ''
    item['value'] = ''

  }

});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table class="tmain" dir="rtl" width="90%" border="0" align="center" id="Table8">
  <tbody>
    <tr height="30">
      <td width="3%">&nbsp;</td>
      <td><input type="checkbox" name="rep_col" value="mer_name" checked=""></td>
      <td>نام فروشگاه</td>
      <td><input type="checkbox" name="rep_col" value="terminal_id"></td>
      <td>کد ترمينال</td>
      <td><input type="checkbox" name="rep_col" value="terminal_name"></td>
      <td>نام ترمينال</td>
    </tr>
    <tr height="30">
      <td width="3%">&nbsp;</td>
      <td><input type="checkbox" name="rep_col" value="log_date" checked=""></td>
      <td>تاريخ ارسال</td>
      <td><input type="checkbox" name="rep_col" value="log_time" checked=""></td>
      <td>زمان ارسال</td>
      <td><input type="checkbox" name="rep_col" value="getpoint_date" checked=""></td>
      <td>تاريخ خريد</td>
    </tr>
    <tr height="30">
      <td width="3%">&nbsp;</td>
      <td><input type="checkbox" name="rep_col" value="getpoint_time" checked=""></td>
      <td>زمان خريد</td>
      <td><input type="checkbox" name="rep_col" value="card_id" checked=""></td>
      <td>شماره کارت</td>
      <td><input type="checkbox" name="rep_col" value="name_pr"></td>
      <td>نام دارنده کارت</td>
    </tr>
    <tr height="30">
      <td width="3%">&nbsp;</td>
      <td><input type="checkbox" name="rep_col" value="device_type"></td>
      <td>نوع پنل</td>
      <td><input type="checkbox" name="rep_col" value="amount" checked=""></td>
      <td>مبلغ</td>
      <td><input type="checkbox" name="rep_col" value="currency_" checked=""></td>
      <td>واحد</td>
    </tr>
    <tr height="30">
      <td width="3%">&nbsp;</td>
      <td><input type="checkbox" name="rep_col" value="point_rate" checked=""></td>
      <td>ضريب لويالتی</td>
      <td><input type="checkbox" name="rep_col" value="point_lo" checked=""></td>
      <td>امتياز</td>
      <td><input type="checkbox" name="rep_col" value="doc_type" checked=""></td>
      <td>نوع پرداخت</td>
    </tr>
    <tr height="30">
      <td width="3%">&nbsp;</td>
      <td><input type="checkbox" name="rep_col" value="cheque_num"></td>
      <td>شماره چک</td>
      <td><input type="checkbox" name="rep_col" value="cheque_date"></td>
      <td>تاريخ چک</td>
      <td><input type="checkbox" name="rep_col" value="account_number"></td>
      <td>شماره حساب</td>
    </tr>
    <tr height="30">
      <td width="3%">&nbsp;</td>
      <td><input type="checkbox" name="rep_col" value="bank_type"></td>
      <td>نام بانک</td>
      <td><input type="checkbox" name="rep_col" value="branch_code"></td>
      <td>شعبه</td>
      <td><input type="checkbox" name="rep_col" value="approval_code"></td>
      <td>کد خريد اعتباری</td>
    </tr>
    <tr height="30">
      <td width="3%">&nbsp;</td>
      <td><input type="checkbox" name="rep_col" value="rebate_cons_per" checked=""></td>
      <td>درصد کارمزد </td>
      <td><input type="checkbox" name="rep_col" value="special_discount"></td>
      <td>درصد تخفيف</td>
      <td><input type="checkbox" name="rep_col" value="pos_setup_rebate"></td>
      <td>درصد کارمزد بانی POS</td>
    </tr>
    <tr height="30">
      <td width="3%">&nbsp;</td>
      <td><input type="checkbox" name="rep_col" value="bin_setup_rebate"></td>
      <td width="33%">درصد کارمزد پشتيبان</td>
      <td><input type="checkbox" name="rep_col" value="merch_setup_rebate"></td>
      <td width="33%">درصد کارمزد بازارياب</td>
      <td><input type="checkbox" name="rep_col" value="merch_setup"></td>
      <td width="33%">بازارياب</td>
    </tr>
    <tr height="25">
      <td width="3%">&nbsp;</td>
      <td><input type="checkbox" name="rep_col" value="mer_id">
      </td>
      <td>کد فروشگاه</td>

      <td><input type="checkbox" name="rep_col" value="bin_code">
      </td>
      <td>کد پشتيبان</td>
      <td><input type="checkbox" name="rep_col" value="bin_name"></td>
      <td>نام پشتيبان</td>

    </tr>
  </tbody>
</table>

5 个答案:

答案 0 :(得分:0)

安德里亚斯是正确的。 将对象更改为这样的jQuery对象。

 $tds = $($trs[$i].cells);

或者(可能效率太低)。

console.log('td',$($tds[2]).text());

或使用普通js

console.log('td',$tds[2].innerText);

https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/innerText

答案 1 :(得分:0)

$tds[2]返回HTMLDom object,要使用jquery方法,它必须是Jquery对象。因此,将$ tds [2]与{{$ tds [2])之类的$()包装在一起。

$(document).ready(function() {
  $trs = $('table > tbody > tr')
  // console.log('trs',$trs)

  var items = []
  for (var $i = 0; $i < $trs.length; ++$i) {
    $tds = $trs[$i].cells
    
    //console.log('td', $tds[2].text())
    console.log('td', $($tds[2]).text())

    var item = {}
    item['label'] = ''
    item['flag'] = ''
    item['value'] = ''

  }

});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table class="tmain" dir="rtl" width="90%" border="0" align="center" id="Table8">
  <tbody>
    <tr height="30">
      <td width="3%">&nbsp;</td>
      <td><input type="checkbox" name="rep_col" value="mer_name" checked=""></td>
      <td>نام فروشگاه</td>
      <td><input type="checkbox" name="rep_col" value="terminal_id"></td>
      <td>کد ترمينال</td>
      <td><input type="checkbox" name="rep_col" value="terminal_name"></td>
      <td>نام ترمينال</td>
    </tr>
    <tr height="30">
      <td width="3%">&nbsp;</td>
      <td><input type="checkbox" name="rep_col" value="log_date" checked=""></td>
      <td>تاريخ ارسال</td>
      <td><input type="checkbox" name="rep_col" value="log_time" checked=""></td>
      <td>زمان ارسال</td>
      <td><input type="checkbox" name="rep_col" value="getpoint_date" checked=""></td>
      <td>تاريخ خريد</td>
    </tr>
    <tr height="30">
      <td width="3%">&nbsp;</td>
      <td><input type="checkbox" name="rep_col" value="getpoint_time" checked=""></td>
      <td>زمان خريد</td>
      <td><input type="checkbox" name="rep_col" value="card_id" checked=""></td>
      <td>شماره کارت</td>
      <td><input type="checkbox" name="rep_col" value="name_pr"></td>
      <td>نام دارنده کارت</td>
    </tr>
    <tr height="30">
      <td width="3%">&nbsp;</td>
      <td><input type="checkbox" name="rep_col" value="device_type"></td>
      <td>نوع پنل</td>
      <td><input type="checkbox" name="rep_col" value="amount" checked=""></td>
      <td>مبلغ</td>
      <td><input type="checkbox" name="rep_col" value="currency_" checked=""></td>
      <td>واحد</td>
    </tr>
    <tr height="30">
      <td width="3%">&nbsp;</td>
      <td><input type="checkbox" name="rep_col" value="point_rate" checked=""></td>
      <td>ضريب لويالتی</td>
      <td><input type="checkbox" name="rep_col" value="point_lo" checked=""></td>
      <td>امتياز</td>
      <td><input type="checkbox" name="rep_col" value="doc_type" checked=""></td>
      <td>نوع پرداخت</td>
    </tr>
    <tr height="30">
      <td width="3%">&nbsp;</td>
      <td><input type="checkbox" name="rep_col" value="cheque_num"></td>
      <td>شماره چک</td>
      <td><input type="checkbox" name="rep_col" value="cheque_date"></td>
      <td>تاريخ چک</td>
      <td><input type="checkbox" name="rep_col" value="account_number"></td>
      <td>شماره حساب</td>
    </tr>
    <tr height="30">
      <td width="3%">&nbsp;</td>
      <td><input type="checkbox" name="rep_col" value="bank_type"></td>
      <td>نام بانک</td>
      <td><input type="checkbox" name="rep_col" value="branch_code"></td>
      <td>شعبه</td>
      <td><input type="checkbox" name="rep_col" value="approval_code"></td>
      <td>کد خريد اعتباری</td>
    </tr>
    <tr height="30">
      <td width="3%">&nbsp;</td>
      <td><input type="checkbox" name="rep_col" value="rebate_cons_per" checked=""></td>
      <td>درصد کارمزد </td>
      <td><input type="checkbox" name="rep_col" value="special_discount"></td>
      <td>درصد تخفيف</td>
      <td><input type="checkbox" name="rep_col" value="pos_setup_rebate"></td>
      <td>درصد کارمزد بانی POS</td>
    </tr>
    <tr height="30">
      <td width="3%">&nbsp;</td>
      <td><input type="checkbox" name="rep_col" value="bin_setup_rebate"></td>
      <td width="33%">درصد کارمزد پشتيبان</td>
      <td><input type="checkbox" name="rep_col" value="merch_setup_rebate"></td>
      <td width="33%">درصد کارمزد بازارياب</td>
      <td><input type="checkbox" name="rep_col" value="merch_setup"></td>
      <td width="33%">بازارياب</td>
    </tr>
    <tr height="25">
      <td width="3%">&nbsp;</td>
      <td><input type="checkbox" name="rep_col" value="mer_id">
      </td>
      <td>کد فروشگاه</td>

      <td><input type="checkbox" name="rep_col" value="bin_code">
      </td>
      <td>کد پشتيبان</td>
      <td><input type="checkbox" name="rep_col" value="bin_name"></td>
      <td>نام پشتيبان</td>

    </tr>
  </tbody>
</table>

答案 2 :(得分:0)

将textContent用于DOM节点,$("td",this).eq(2).text()用于jQuery单元格

这是使用jQuery的方法。不建议您像以前那样混合使用DOM和jQuery,这很明显的原因是您会感到困惑并使用错误的访问方法

$(function() {
  var items = []
  $('table > tbody > tr').each(function() {
    var thirdCell = $("td", this).eq(2).text()
    items.push({
      "whatever": thirdCell,
      'label': '',
      'flag': '',
      'value': ''
    })
  })

  console.log(items)
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table class="tmain" dir="rtl" width="90%" border="0" align="center" id="Table8">
  <tbody>
    <tr height="30">
      <td width="3%">&nbsp;</td>
      <td><input type="checkbox" name="rep_col" value="mer_name" checked=""></td>
      <td>نام فروشگاه</td>
      <td><input type="checkbox" name="rep_col" value="terminal_id"></td>
      <td>کد ترمينال</td>
      <td><input type="checkbox" name="rep_col" value="terminal_name"></td>
      <td>نام ترمينال</td>
    </tr>
    <tr height="30">
      <td width="3%">&nbsp;</td>
      <td><input type="checkbox" name="rep_col" value="log_date" checked=""></td>
      <td>تاريخ ارسال</td>
      <td><input type="checkbox" name="rep_col" value="log_time" checked=""></td>
      <td>زمان ارسال</td>
      <td><input type="checkbox" name="rep_col" value="getpoint_date" checked=""></td>
      <td>تاريخ خريد</td>
    </tr>
    <tr height="30">
      <td width="3%">&nbsp;</td>
      <td><input type="checkbox" name="rep_col" value="getpoint_time" checked=""></td>
      <td>زمان خريد</td>
      <td><input type="checkbox" name="rep_col" value="card_id" checked=""></td>
      <td>شماره کارت</td>
      <td><input type="checkbox" name="rep_col" value="name_pr"></td>
      <td>نام دارنده کارت</td>
    </tr>
    <tr height="30">
      <td width="3%">&nbsp;</td>
      <td><input type="checkbox" name="rep_col" value="device_type"></td>
      <td>نوع پنل</td>
      <td><input type="checkbox" name="rep_col" value="amount" checked=""></td>
      <td>مبلغ</td>
      <td><input type="checkbox" name="rep_col" value="currency_" checked=""></td>
      <td>واحد</td>
    </tr>
    <tr height="30">
      <td width="3%">&nbsp;</td>
      <td><input type="checkbox" name="rep_col" value="point_rate" checked=""></td>
      <td>ضريب لويالتی</td>
      <td><input type="checkbox" name="rep_col" value="point_lo" checked=""></td>
      <td>امتياز</td>
      <td><input type="checkbox" name="rep_col" value="doc_type" checked=""></td>
      <td>نوع پرداخت</td>
    </tr>
    <tr height="30">
      <td width="3%">&nbsp;</td>
      <td><input type="checkbox" name="rep_col" value="cheque_num"></td>
      <td>شماره چک</td>
      <td><input type="checkbox" name="rep_col" value="cheque_date"></td>
      <td>تاريخ چک</td>
      <td><input type="checkbox" name="rep_col" value="account_number"></td>
      <td>شماره حساب</td>
    </tr>
    <tr height="30">
      <td width="3%">&nbsp;</td>
      <td><input type="checkbox" name="rep_col" value="bank_type"></td>
      <td>نام بانک</td>
      <td><input type="checkbox" name="rep_col" value="branch_code"></td>
      <td>شعبه</td>
      <td><input type="checkbox" name="rep_col" value="approval_code"></td>
      <td>کد خريد اعتباری</td>
    </tr>
    <tr height="30">
      <td width="3%">&nbsp;</td>
      <td><input type="checkbox" name="rep_col" value="rebate_cons_per" checked=""></td>
      <td>درصد کارمزد </td>
      <td><input type="checkbox" name="rep_col" value="special_discount"></td>
      <td>درصد تخفيف</td>
      <td><input type="checkbox" name="rep_col" value="pos_setup_rebate"></td>
      <td>درصد کارمزد بانی POS</td>
    </tr>
    <tr height="30">
      <td width="3%">&nbsp;</td>
      <td><input type="checkbox" name="rep_col" value="bin_setup_rebate"></td>
      <td width="33%">درصد کارمزد پشتيبان</td>
      <td><input type="checkbox" name="rep_col" value="merch_setup_rebate"></td>
      <td width="33%">درصد کارمزد بازارياب</td>
      <td><input type="checkbox" name="rep_col" value="merch_setup"></td>
      <td width="33%">بازارياب</td>
    </tr>
    <tr height="25">
      <td width="3%">&nbsp;</td>
      <td><input type="checkbox" name="rep_col" value="mer_id">
      </td>
      <td>کد فروشگاه</td>

      <td><input type="checkbox" name="rep_col" value="bin_code">
      </td>
      <td>کد پشتيبان</td>
      <td><input type="checkbox" name="rep_col" value="bin_name"></td>
      <td>نام پشتيبان</td>

    </tr>
  </tbody>
</table>

答案 3 :(得分:0)

$tds[2]是DOM节点,而不是jQuery对象,因此应这样做

$(document).ready(function() {
  $trs = $('table > tbody > tr')
  // console.log('trs',$trs)

  var items = []
  for (var $i = 0; $i < $trs.length; ++$i) {
    $tds = $trs[$i].cells

    console.log('td', $($tds[2]).text())

    var item = {}
    item['label'] = ''
    item['flag'] = ''
    item['value'] = ''

  }

});

答案 4 :(得分:-2)

您应该像这样将$tds[2]封装在jquery中:$($tds[2]),以便在其上调用.text()

这里是示例:

$( document ).ready(function() {
$trs = $('table > tbody > tr')
// console.log('trs',$trs)

var items = []
for(var $i=0 ; $i < $trs.length ; ++$i){
    $tds = $trs[$i].cells

    console.log('td',$($tds[2]).text())

    var item        = {}
    item['label']   = ''
    item['flag']    = ''
    item['value']   = ''

}

});