добавляя строки в таблицу за клик, манипулируя тем самым полем имени - PullRequest
0 голосов
/ 07 марта 2012

Я нашел этот скрипт, который генерирует строку в таблице.Кроме того, я хочу, чтобы он изменил имя поля строки, которую он генерирует , потому что данные каждой вновь созданной строки необходимо сохранить в базе данных позже.Однако нажатие только создает строку без переименования поля имени этой строки.


Я вырезал все фрагменты кода neccessarry в эти скобки здесь.Это должно быть копируемо-работающим.

echo '<html><head>';
echo '<title>Adding rows</title>';
//the Java-script part which generates the new rows 
//(i guess the "row-name"-manipulation must be embedded here, i just don't get how :-( )
echo 
'<SCRIPT language="javascript">
      function addRowEntry(tableID){
          var table = document.getElementById(tableID);
          var rowCount = table.rows.length;
          var row = table.insertRow(rowCount);
          var colCount = table.rows[0].cells.length;
          for(var i=0; i<colCount; i++) {
              var newcell = row.insertCell(i);
              newcell.innerHTML = table.rows[0].cells[i].innerHTML;
          }
      }
</SCRIPT>';
echo '</head>';
//the body-part which contains the button with the "onclick"-call on that function
echo '<body>';
//the form which on submit should pass all those created rows into the $_POST-Variables
echo '<form action="passToEvaluationScript.php" method="POST">';
//the button with the "onClick"-call
echo "<input type='button' value='add row entry' onClick=addRowEntry('myTable')>";
//the table which get the additional row
echo '<table id="myTable">';
echo '<tr>';
echo '<td>';
//this element should actually be renamed each click
//e.g. 10 consecutive clicks should create 10 of these "drop-down-boxes"
//each named country1, country2, ........ country10 respectively
echo '<SELECT name="country">
        <OPTION value="in">India</OPTION>
        <OPTION value="de">Germany</OPTION>
        <OPTION value="fr">France</OPTION>
        <OPTION value="us">United States</OPTION>
        <OPTION value="ch">Switzerland</OPTION>
      </SELECT>';
echo '</td>';
echo '</tr>';
echo '</table>';
echo '<input type="submit">';
echo '</form>';
echo '</body>';
echo '</html>';

Ответы [ 2 ]

1 голос
/ 07 марта 2012

Этот будет работать даже с другими <select> элементами на странице:

<SCRIPT language="javascript">
  function addRowEntry(tableID){
      var table = document.getElementById(tableID);
      var rowCount = table.rows.length;

      // create a row element
      var row = document.createElement("tr");
      // add the row to the table
      table.appendChild(row);

      var colCount = table.rows[0].cells.length;
      for(var i=0; i<colCount; i++) {
          var newcell = row.insertCell(i);
          newcell.innerHTML = table.rows[0].cells[i].innerHTML;
      }
     // get the select element
     var dropdown = row.getElementsByTagName("select")[0];
     // get the current total of dropdowns in the table
     var total = table.getElementsByTagName("select").length;

     // set the name
     dropdown.setAttribute("name", "country" + total);
  }
</SCRIPT>
1 голос
/ 07 марта 2012

Если вы хотите добавить новый элемент выбора в новую строку со значением предыдущего выбора, вы можете попробовать что-то вроде этого:

<SCRIPT language="javascript">
      function addRowEntry(tableID){
        var table = document.getElementById(tableID);
        var rowCount = table.rows.length;
        var row = table.insertRow(rowCount);
        var colCount = table.rows[0].cells.length;
        for(var i=0; i<colCount; i++) {
            var newcell = row.insertCell(i);
            newcell.innerHTML = table.rows[0].cells[i].innerHTML;
        }
        document.getElementsByTagName('select')[document.getElementsByTagName('select').length - 1].setAttribute('name','country'+document.getElementsByTagName('select').length);
      }
</SCRIPT>

Если это не то, что вы ищете, дайте мнезнать.Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...