निम्नलिखित कोड से (सरलीकृत कोड):

<table>
  <tr class="alt">
    <td class="name">
      <a href="" onclick="">NAME1</a>
    </td>
    <td class="group">
      <a class="groupLink" onclick="" href="">GROUP1</a>
    </td>
    <td class="score">1000</td>
  </tr>

  <tr class="alt">
    <td class="name">
      <a href="" onclick="">NAME2</a>
    </td>
    <td class="group">
      <a class="groupLink" onclick="" href="">GROUP2</a>
    </td>
    <td class="score">4300</td>
  </tr>

  <tr class="alt">
    <td class="name">
      <a href="" onclick="">NAME3</a>
    </td>
    <td class="group">
      <a class="groupLink" onclick="" href="">GROUP1</a>
    </td>
    <td class="score">3000</td>
  </tr>
</table>

मैं GROUP1 पर सभी के लिए निम्नलिखित जानकारी निकालना चाहता/चाहती हूं:

NAME1 Score:1000
NAME3 Score:3000

और यदि संभव हो तो उस पर एक .txt लिखें। यदि जावास्क्रिप्ट पर txt में लिखना संभव नहीं है, तो कंसोल.लॉग भी ठीक है।

0
DHON JOE 1 जिंदा 2017, 18:57

3 जवाब

सबसे बढ़िया उत्तर

आपको एक ऐसी वस्तु बनाने की जरूरत है जिसमें हर समूह हो। फिर आपको इसे छानने की जरूरत है। आप ऐसा कुछ कर सकते हैं:

var trs = document.querySelectorAll("tr");
var myObj = {};
for (var i = 0; i < trs.length; i++) {
  // Get the group.
  group = trs[i].querySelector(".groupLink").innerHTML.trim();
  myObj[group] = myObj[group] || [];
  myObj[group].push({
    "name": trs[i].querySelector(".name a").innerHTML.trim(),
    "score": trs[i].querySelector(".score").innerHTML.trim()
  });
}
console.log(myObj["GROUP1"]);
<table>
  <tr class="alt">
    <td class="name">
      <a href="" onclick="">NAME1</a>
    </td>
    <td class="group">
      <a class="groupLink" onclick="" href="">GROUP1</a>
    </td>
    <td class="score">1000</td>
  </tr>

  <tr class="alt">
    <td class="name">
      <a href="" onclick="">NAME2</a>
    </td>
    <td class="group">
      <a class="groupLink" onclick="" href="">GROUP2</a>
    </td>
    <td class="score">4300</td>
  </tr>

  <tr class="alt">
    <td class="name">
      <a href="" onclick="">NAME3</a>
    </td>
    <td class="group">
      <a class="groupLink" onclick="" href="">GROUP1</a>
    </td>
    <td class="score">3000</td>
  </tr>
</table>

मुझे यहां आउटपुट मिलता है:

[
  {
    "name": "NAME1",
    "score": "1000"
  },
  {
    "name": "NAME3",
    "score": "3000"
  }
]

आप अपने आउटपुट को प्रारूपित करने के लिए एक साधारण लूप का उपयोग कर सकते हैं:

var trs = document.querySelectorAll("tr");
var myObj = {};
for (var i = 0; i < trs.length; i++) {
  // Get the group.
  group = trs[i].querySelector(".groupLink").innerHTML.trim();
  myObj[group] = myObj[group] || [];
  myObj[group].push({
    "name": trs[i].querySelector(".name a").innerHTML.trim(),
    "score": trs[i].querySelector(".score").innerHTML.trim()
  });
}
for (var j = 0; j < myObj["GROUP1"].length; j++)
  console.log(myObj["GROUP1"][j].name + " Score: " + myObj["GROUP1"][j].score);
<table>
  <tr class="alt">
    <td class="name">
      <a href="" onclick="">NAME1</a>
    </td>
    <td class="group">
      <a class="groupLink" onclick="" href="">GROUP1</a>
    </td>
    <td class="score">1000</td>
  </tr>

  <tr class="alt">
    <td class="name">
      <a href="" onclick="">NAME2</a>
    </td>
    <td class="group">
      <a class="groupLink" onclick="" href="">GROUP2</a>
    </td>
    <td class="score">4300</td>
  </tr>

  <tr class="alt">
    <td class="name">
      <a href="" onclick="">NAME3</a>
    </td>
    <td class="group">
      <a class="groupLink" onclick="" href="">GROUP1</a>
    </td>
    <td class="score">3000</td>
  </tr>
</table>

आउटपुट

NAME1 Score: 1000
NAME3 Score: 3000
2
Praveen Kumar Purushothaman 1 जिंदा 2017, 19:06

मूल रूप से, यह केवल कोशिकाओं पर पुनरावृति करने और प्रासंगिक जानकारी निकालने की बात है।

आप इसे इस तरह कर सकते हैं:

const rows = document.querySelectorAll('tr');
rows.forEach(function(el){
  const name = el.querySelector(".name a").innerHTML.trim();
  const score = el.querySelector(".score").innerHTML.trim();
  console.log(`${name} Score:${score}`);
});
<table>
  <tr class="alt">
    <td class="name">
      <a href="" onclick="">NAME1</a>
    </td>
    <td class="group">
      <a class="groupLink" href="" onclick="">GROUP1</a>
    </td>
    <td class="score">1000</td>
  </tr>
  <tr class="alt">
    <td class="name">
      <a href="" onclick="">NAME2</a>
    </td>
    <td class="group">
      <a class="groupLink" href="" onclick="">GROUP2</a>
    </td>
    <td class="score">4300</td>
  </tr>
  <tr class="alt">
    <td class="name">
      <a href="" onclick="">NAME3</a>
    </td>
    <td class="group">
      <a class="groupLink" href="" onclick="">GROUP1</a>
    </td>
    <td class="score">3000</td>
  </tr>
</table>
0
James Hibbard 1 जिंदा 2017, 19:12

मैं GROUP1 पर सभी के लिए निम्नलिखित जानकारी निकालना चाहता/चाहती हूं

Array.prototype.forEach() फ़ंक्शन के साथ सिंगल लूप का उपयोग करके लघु समाधान:

var result = [];
Array.prototype.slice.call(document.querySelectorAll('tr.alt')).forEach(function(el){
    var childs = el.children;
    if (childs[1].children[0].innerHTML === 'GROUP1') {
        this.push({Name: childs[0].children[0].innerHTML.trim(), Score: childs[2].innerHTML.trim()})
    }
}, result);

console.log(result);
<table><tr class="alt">
    <td class="name">
         <a href="" onclick="">NAME1</a>
    </td>
    <td class="group">
         <a class="groupLink" onclick="" href="">GROUP1</a>
    </td>
    <td class="score">1000</td>
</tr>

<tr class="alt">
    <td class="name">
        <a href="" onclick="">NAME2</a>
    </td>
    <td class="group">
        <a class="groupLink" onclick="" href="">GROUP2</a>
    </td>
    <td class="score">4300</td>
</tr>

<tr class="alt">
    <td class="name">
        <a href="" onclick="">NAME3</a>
    </td>
    <td class="group">
         <a class="groupLink" onclick="" href="">GROUP1</a>
    </td>
    <td class="score">3000</td>
    </tr>
</table>
0
RomanPerekhrest 1 जिंदा 2017, 19:33