نمایش نتایج 1 تا 2 از 2

نام تاپیک: انتخاب جدول از داخل یک فایل html توسط جاوا اسکریپت

  1. #1

    انتخاب جدول از داخل یک فایل html توسط جاوا اسکریپت

    سلام و عرض ادب
    یه فایلی دارم که توش چندتا جدول داره و با یه کد ساده جاوا میخوام جدول رو مرتب کنم. یه ایراد کوچولو داره:

    table = document.getElementById("MyTable1");


    چطوری میشه MyTable رو طوری تنظیم کرد که مثلا MyTable1 - MyTable2 - MyTable3 و ... بشه باهاش انتخاب کرد؟ و لازم نباشه این کد رو 60 بار تکرار کنم:

    <!DOCTYPE html><html>
    <head>
    <title>Sort a HTML Table Alphabetically</title>
    <style>
    table {
    border-spacing: 0;
    width: 100%;
    border: 1px solid #ddd;
    }


    th {
    cursor: pointer;
    background-color: red;
    }


    th, td {
    text-align: left;
    padding: 16px;
    }


    tr:nth-child(even) {
    background-color: #f2f2f2
    }
    </style>
    </head>
    <body>


    <p><strong>Click the headers to sort the table.</strong></p>
    <p>The first time you click, the sorting direction is ascending (A to Z).</p>
    <p>Click again, and the sorting direction will be descending (Z to A):</p>


    <table id="myTable1">
    <tr>
    <!--When a header is clicked, run the sortTable function, with a parameter, 0 for sorting by names, 1 for sorting by country:-->
    <th onclick="sortTable(0)">Name</th>
    <th onclick="sortTable(1)">Country</th>
    </tr>
    <tr>
    <td>Berglunds snabbkop</td>
    <td>Sweden</td>
    </tr>
    <tr>
    <td>North/South</td>
    <td>UK</td>
    </tr>
    <tr>
    <td>Alfreds Futterkiste</td>
    <td>Germany</td>
    </tr>
    <tr>
    <td>Koniglich Essen</td>
    <td>Germany</td>
    </tr>
    <tr>
    <td>Magazzini Alimentari Riuniti</td>
    <td>Italy</td>
    </tr>
    <tr>
    <td>Paris specialites</td>
    <td>France</td>
    </tr>
    <tr>
    <td>Island Trading</td>
    <td>UK</td>
    </tr>
    <tr>
    <td>Laughing Bacchus Winecellars</td>
    <td>Canada</td>
    </tr>
    </table>


    <hr />


    <table id="myTable2">
    <tr>
    <!--When a header is clicked, run the sortTable function, with a parameter, 0 for sorting by names, 1 for sorting by country:-->
    <th onclick="sortTable(0)">Name</th>
    <th onclick="sortTable(1)">Country</th>
    </tr>
    <tr>
    <td>Berglunds snabbkop</td>
    <td>Sweden</td>
    </tr>
    <tr>
    <td>North/South</td>
    <td>UK</td>
    </tr>
    <tr>
    <td>Alfreds Futterkiste</td>
    <td>Germany</td>
    </tr>
    <tr>
    <td>Koniglich Essen</td>
    <td>Germany</td>
    </tr>
    <tr>
    <td>Magazzini Alimentari Riuniti</td>
    <td>Italy</td>
    </tr>
    <tr>
    <td>Paris specialites</td>
    <td>France</td>
    </tr>
    <tr>
    <td>Island Trading</td>
    <td>UK</td>
    </tr>
    <tr>
    <td>Laughing Bacchus Winecellars</td>
    <td>Canada</td>
    </tr>
    </table>


    <script>
    function sortTable(n) {
    var table, rows, switching, i, x, y, shouldSwitch, dir, switchcount = 0;
    table = document.getElementById("MyTable1");
    switching = true;
    //Set the sorting direction to ascending:
    dir = "asc";
    /*Make a loop that will continue until
    no switching has been done:*/
    while (switching) {
    //start by saying: no switching is done:
    switching = false;
    rows = table.rows;
    /*Loop through all table rows (except the
    first, which contains table headers):*/
    for (i = 1; i < (rows.length - 1); i++) {
    //start by saying there should be no switching:
    shouldSwitch = false;
    /*Get the two elements you want to compare,
    one from current row and one from the next:*/
    x = rows[i].getElementsByTagName("TD")[n];
    y = rows[i + 1].getElementsByTagName("TD")[n];
    /*check if the two rows should switch place,
    based on the direction, asc or desc:*/
    if (dir == "asc") {
    if (x.innerHTML.toLowerCase() > y.innerHTML.toLowerCase()) {
    //if so, mark as a switch and break the loop:
    shouldSwitch= true;
    break;
    }
    } else if (dir == "desc") {
    if (x.innerHTML.toLowerCase() < y.innerHTML.toLowerCase()) {
    //if so, mark as a switch and break the loop:
    shouldSwitch = true;
    break;
    }
    }
    }
    if (shouldSwitch) {
    /*If a switch has been marked, make the switch
    and mark that a switch has been done:*/
    rows[i].parentNode.insertBefore(rows[i + 1], rows[i]);
    switching = true;
    //Each time a switch is done, increase this count by 1:
    switchcount ++;
    } else {
    /*If no switching has been done AND the direction is "asc",
    set the direction to "desc" and run the while loop again.*/
    if (switchcount == 0 && dir == "asc") {
    dir = "desc";
    switching = true;
    }
    }
    }
    }
    </script>


    </body>
    </html>




    الان مجبورم یا function sortTable رو 60 بار تکرار کنم یا هم اینکه 60 تا table = getElementbyId تعریف کنم.

    راه حلی دارند دوستان

  2. #2

    نقل قول: انتخاب جدول از داخل یک فایل html توسط جاوا اسکریپت

    نقل قول نوشته شده توسط daranian مشاهده تاپیک
    سلام و عرض ادب
    یه فایلی دارم که توش چندتا جدول داره و با یه کد ساده جاوا میخوام جدول رو مرتب کنم. یه ایراد کوچولو داره:

    table = document.getElementById("MyTable1");


    چطوری میشه MyTable رو طوری تنظیم کرد که مثلا MyTable1 - MyTable2 - MyTable3 و ... بشه باهاش انتخاب کرد؟ و لازم نباشه این کد رو 60 بار تکرار کنم:

    <!DOCTYPE html><html>
    <head>
    <title>Sort a HTML Table Alphabetically</title>
    <style>
    table {
    border-spacing: 0;
    width: 100%;
    border: 1px solid #ddd;
    }


    th {
    cursor: pointer;
    background-color: red;
    }


    th, td {
    text-align: left;
    padding: 16px;
    }


    tr:nth-child(even) {
    background-color: #f2f2f2
    }
    </style>
    </head>
    <body>


    <p><strong>Click the headers to sort the table.</strong></p>
    <p>The first time you click, the sorting direction is ascending (A to Z).</p>
    <p>Click again, and the sorting direction will be descending (Z to A):</p>


    <table id="myTable1">
    <tr>
    <!--When a header is clicked, run the sortTable function, with a parameter, 0 for sorting by names, 1 for sorting by country:-->
    <th onclick="sortTable(0)">Name</th>
    <th onclick="sortTable(1)">Country</th>
    </tr>
    <tr>
    <td>Berglunds snabbkop</td>
    <td>Sweden</td>
    </tr>
    <tr>
    <td>North/South</td>
    <td>UK</td>
    </tr>
    <tr>
    <td>Alfreds Futterkiste</td>
    <td>Germany</td>
    </tr>
    <tr>
    <td>Koniglich Essen</td>
    <td>Germany</td>
    </tr>
    <tr>
    <td>Magazzini Alimentari Riuniti</td>
    <td>Italy</td>
    </tr>
    <tr>
    <td>Paris specialites</td>
    <td>France</td>
    </tr>
    <tr>
    <td>Island Trading</td>
    <td>UK</td>
    </tr>
    <tr>
    <td>Laughing Bacchus Winecellars</td>
    <td>Canada</td>
    </tr>
    </table>


    <hr />


    <table id="myTable2">
    <tr>
    <!--When a header is clicked, run the sortTable function, with a parameter, 0 for sorting by names, 1 for sorting by country:-->
    <th onclick="sortTable(0)">Name</th>
    <th onclick="sortTable(1)">Country</th>
    </tr>
    <tr>
    <td>Berglunds snabbkop</td>
    <td>Sweden</td>
    </tr>
    <tr>
    <td>North/South</td>
    <td>UK</td>
    </tr>
    <tr>
    <td>Alfreds Futterkiste</td>
    <td>Germany</td>
    </tr>
    <tr>
    <td>Koniglich Essen</td>
    <td>Germany</td>
    </tr>
    <tr>
    <td>Magazzini Alimentari Riuniti</td>
    <td>Italy</td>
    </tr>
    <tr>
    <td>Paris specialites</td>
    <td>France</td>
    </tr>
    <tr>
    <td>Island Trading</td>
    <td>UK</td>
    </tr>
    <tr>
    <td>Laughing Bacchus Winecellars</td>
    <td>Canada</td>
    </tr>
    </table>


    <script>
    function sortTable(n) {
    var table, rows, switching, i, x, y, shouldSwitch, dir, switchcount = 0;
    table = document.getElementById("MyTable1");
    switching = true;
    //Set the sorting direction to ascending:
    dir = "asc";
    /*Make a loop that will continue until
    no switching has been done:*/
    while (switching) {
    //start by saying: no switching is done:
    switching = false;
    rows = table.rows;
    /*Loop through all table rows (except the
    first, which contains table headers):*/
    for (i = 1; i < (rows.length - 1); i++) {
    //start by saying there should be no switching:
    shouldSwitch = false;
    /*Get the two elements you want to compare,
    one from current row and one from the next:*/
    x = rows[i].getElementsByTagName("TD")[n];
    y = rows[i + 1].getElementsByTagName("TD")[n];
    /*check if the two rows should switch place,
    based on the direction, asc or desc:*/
    if (dir == "asc") {
    if (x.innerHTML.toLowerCase() > y.innerHTML.toLowerCase()) {
    //if so, mark as a switch and break the loop:
    shouldSwitch= true;
    break;
    }
    } else if (dir == "desc") {
    if (x.innerHTML.toLowerCase() < y.innerHTML.toLowerCase()) {
    //if so, mark as a switch and break the loop:
    shouldSwitch = true;
    break;
    }
    }
    }
    if (shouldSwitch) {
    /*If a switch has been marked, make the switch
    and mark that a switch has been done:*/
    rows[i].parentNode.insertBefore(rows[i + 1], rows[i]);
    switching = true;
    //Each time a switch is done, increase this count by 1:
    switchcount ++;
    } else {
    /*If no switching has been done AND the direction is "asc",
    set the direction to "desc" and run the while loop again.*/
    if (switchcount == 0 && dir == "asc") {
    dir = "desc";
    switching = true;
    }
    }
    }
    }
    </script>


    </body>
    </html>




    الان مجبورم یا function sortTable رو 60 بار تکرار کنم یا هم اینکه 60 تا table = getElementbyId تعریف کنم.

    راه حلی دارند دوستان
    دوستان زحمت نکشید خودم پیدا کردم

    <table border="1" class="supTable1"><tr>
    <th onclick="sortTable('supTable1',0)"> Team Name</th>
    <th onclick="sortTable('supTable1',1)">Super Bowls</th>
    [...]
    <div id="supAfc">
    <table border="1"class="supTable2">
    <tr>
    <th onclick="sortTable('supTable2',0)"> Team Name</th>
    <th onclick="sortTable('supTable2',1)">Super Bowls</th></tr>


    کد جاوا اسکریپتش هم باید به این صورت تغییر بدیم:

    function sortTable(tableClass, n){var table, rows, switching, i, x, y, shouldSwitch, dir, switchcount =0;


    table = document.getElementsByClassName(tableClass)[0];
    switching =true; dir ="asc";


تاپیک های مشابه

  1. سوال: مشکل اجرا نشدن جاوااسکریپت در HTML
    نوشته شده توسط ab.ali در بخش طراحی وب (Web Design)
    پاسخ: 1
    آخرین پست: یک شنبه 29 تیر 1393, 15:50 عصر
  2. سوال: فراخوانی متد جاوا اسکریپت در html
    نوشته شده توسط az.heidarzadeh در بخش ASP.NET Web Forms
    پاسخ: 3
    آخرین پست: شنبه 05 اسفند 1391, 10:16 صبح
  3. حذف کدهای جاوااسکریپت یک فایل HTML
    نوشته شده توسط Beginner2013 در بخش مباحث عمومی دلفی و پاسکال
    پاسخ: 2
    آخرین پست: یک شنبه 18 تیر 1391, 18:55 عصر
  4. پاسخ: 2
    آخرین پست: دوشنبه 29 شهریور 1389, 11:11 صبح

برچسب های این تاپیک

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •