2

我在下面有一些 javascript 代码的 2 个版本。

在版本 1 中,当我调用 function 时addNewCell(tableID),我可以触发该行 alert("bingo")

在版本 2 中,我添加了更多代码。现在这条线alert("bingo")不火了。是什么赋予了?我做了检查,括号平衡了。

版本 1

var counter = 1;
var limit = 100;


function isEven(value) {
    value = Number(value);
    if (value%2 == 0)
        return true;
    else
        return false;
}


function addNewCell(tableID){
     if (counter == limit)  {
          alert("You have reached the limit of adding inputs");
     }
     else {
          alert("bingo");

    counter++;

        }
}

第 2 版

var counter = 1;
    var limit = 100;


    function isEven(value) {
            value = Number(value);
        if (value%2 == 0)
            return true;
        else
            return false;
    }


    function addNewCell(tableID){
         if (counter == limit)  {
              alert("You have reached the limit of adding inputs");
         }
         else {
              alert("bingo");





            var table = document.getElementById(tableID);
            var rowCount = table.rows.length;

            var lastRow = table.rows[rowCount-1];

            var lastRowCellsCount = lastRow.getElementsByTagName('td').length;
            // alternative var lastRowCellsCount = lastRow.cells.length;


           if isEven(lastRowCellsCount) {

                var newRow = table.insertRow(rowCount);
                var newCell0 = newRow.insertCell(0);

                newCell0.innerHTML = '<input type="text" size="76" onclick="addNewCell('initialTable')" name="myInputs[]">  <br><br>  <textarea rows="6" cols="76" name="myInputs[]"></textarea > ' ;




            }
          else {

             var newCell1 = lastRow.insertCell(1); 
             newCell1.innerHTML = '<input type="text" size="76" onclick="addNewCell('initialTable')" name="myInputs[]">  <br><br>  <textarea rows="6" cols="76" name="myInputs[]"></textarea > ' ;

            }

            counter++;

        }
}
4

3 回答 3

4

您的字符串中有语法错误:

newCell0.innerHTML = '<input type="text" size="76" onclick="addNewCell('initialTable')" name="myInputs[]">  <br><br>  <textarea rows="6" cols="76" name="myInputs[]"></textarea > ';

会抛出一个SyntaxError: Unexpected identifier

使用\scape''将起作用:

 newCell0.innerHTML = '<input type="text" size="76" onclick="addNewCell(\'initialTable\')" name="myInputs[]">  <br><br>  <textarea rows="6" cols="76" name="myInputs[]"></textarea > ';

或者,如果您尝试连接一个变量(未在代码中定义):

 newCell0.innerHTML = '<input type="text" size="76" onclick="addNewCell(' + initialTable +')" name="myInputs[]">  <br><br>  <textarea rows="6" cols="76" name="myInputs[]"></textarea > ';

另外,我建议您看一下这个链接,该链接向您展示如何在 Chrome DevTools 中调试 Javascript 代码(如果您愿意,可以使用 firebug)

于 2013-06-27T22:46:48.080 回答
0

事实证明,而不是 if isEven(lastRowCellsCount) 我应该使用 if (isEven(lastRowCellsCount)) (即,我错过了括号)

于 2013-06-28T00:48:07.640 回答
0

使用 Firebug 查看控制台,可以看到错误。

于 2013-06-27T22:49:04.077 回答