javascript函数if,else条件

时间:2016-11-19 15:59:00

标签: javascript if-statement

我是编程新手,我从头开始创建了以下Javascript函数。但是,它没有正确执行。它有一些错误,但是,我无法清除错误。请帮助我,

<script type = "text/javascript">
        function GetSelectedRow(lnk) {
            var row = lnk.parentNode.parentNode;
            if (row.cells[0].innerHTML == "checkbox")
            {
                var ItemCode = row.cells[1].innerHTML;
                var ItemName = row.cells[2].innerHTML;
                var Unit = row.cells[3].innerHTML;
                var Price = row.cells[4].innerHTML;
                var StockQty = row.cells[5].innerHTML;
                document.getElementById('<%=TxtICode.ClientID %>').value = ItemCode;
                document.getElementById('<%=TxtIName.ClientID %>').value = ItemName;
                document.getElementById('<%=DropDownUnit.ClientID %>').value = Unit;
                document.getElementById('<%=TxtPrice.ClientID %>').value = Price;
                document.getElementById('<%=TxtStockQty.ClientID %>').value = StockQty;
                return false;

            }
           else (row.cells[0].innerHTML != checkbox)
            {
                 var ItemCode = row.cells[0].innerHTML;
                var ItemName = row.cells[1].innerHTML;
                var Unit = row.cells[2].innerHTML;
                var Price = row.cells[3].innerHTML;
                var StockQty = row.cells[4].innerHTML;
                document.getElementById('<%=TxtICode.ClientID %>').value = ItemCode;
                document.getElementById('<%=TxtIName.ClientID %>').value = ItemName;
                document.getElementById('<%=DropDownUnit.ClientID %>').value = Unit;
                document.getElementById('<%=TxtPrice.ClientID %>').value = Price;
                document.getElementById('<%=TxtStockQty.ClientID %>').value = StockQty;
                return false;
            }

        }
    </script>

1 个答案:

答案 0 :(得分:-1)

如果你实际上想要测试第二个条件,如果第一个条件为假,那么,

else (row.cells[0].innerHTML != checkbox)

应该是:

else if(row.cells[0].innerHTML != checkbox)

但是您的else条件与if条件相同(除了您忘记了checkboxelse周围的引号),所以如果row.cells[0].innerHTML == "checkbox"那么你的代码永远不会命中else分支。 你很可能根本不想要其他情况。

另外,如果你的函数朝向这两个路径中的一个(真/假),并且它们都返回false那么似乎你正在使用它来退出函数,这是不必要的,因为你的函数无论如何,在if语句之后终止,或者您希望false始终是返回值,这没有任何意义。

最后,真正分支中大约一半的代码与假分支中的代码相同。该代码无论如何都需要运行,所以只需在两个分支之外编写一次,让你的if分支机构只关心每种情况下的不同之处(DRY:&#34; Don&#39 ; t重复自己&#34;是任何编程语言的最佳实践。)

function GetSelectedRow(lnk) {

    var ItemCode, ItemName, Unit,Price, StockQty;
    var row = lnk.parentNode.parentNode;

    if (row.cells[0].innerHTML == "checkbox") {
        ItemCode = row.cells[1].innerHTML;
        ItemName = row.cells[2].innerHTML;
        Unit = row.cells[3].innerHTML;
        Price = row.cells[4].innerHTML;
        StockQty = row.cells[5].innerHTML;

    } else {
        ItemCode = row.cells[0].innerHTML;
        ItemName = row.cells[1].innerHTML;
        Unit = row.cells[2].innerHTML;
        Price = row.cells[3].innerHTML;
        StockQty = row.cells[4].innerHTML;
    }

    document.getElementById('<%=TxtICode.ClientID %>').value = ItemCode;
    document.getElementById('<%=TxtIName.ClientID %>').value = ItemName;
    document.getElementById('<%=DropDownUnit.ClientID %>').value = Unit;
    document.getElementById('<%=TxtPrice.ClientID %>').value = Price;
    document.getElementById('<%=TxtStockQty.ClientID %>').value = StockQty;

}