2016-02-25 65 views
-2

我试图根据它们的ID为TD元素添加一个值。要做到这一点,我想通过if语句来传递一系列id,见下文;设置值取决于TD.id

var pricing = 0; 
var extraLeg = 9.99; 
var standardSeat = 4.99; 
var upFront = 9.99; 
var extraLeg1 = 13.99; 

    var tds = document.getElementsByTagName("td"); 
    for (var T = 0; T<tds.length; T++) 
    { 
    if(tds[T].id == "_1a","_1f") 
    { 
     pricing = extraLeg1; 
    } 
    if(tds[T].id == "_2a","_6f") 
    { 
     pricing = upFront; 
    } 
    if(tds[T].id == "_7a","_11f") 
    { 
     pricing = standardSeat; 
    } 
    if(tds[T].id == "_12a","_13f") 
    { 
     pricing = extraLeg; 
    } 
    if(tds[T].id == "_13a","_23f") 
    { 
     pricing = standardSeat; 
    }  
    } 

表中的每一行由7个td元素;
“_1a”, “_ 1B”, “_ 1C”, “通道号”, “_ 1D”, “_ 1E”, “_ 1F”

然而,当我尝试这一点,点击套价格为第一要素所有其他元素尽管for循环。任何人都可以告诉我如何解决这个问题,以便td被赋予特定的值?

在此先感谢

+0

为什么jQuery标签?您的if语句也无效。最后,td元素不能具有值属性。 – j08691

+0

我应该在问题中指定if语句要检查TD.id的范围,如果TD.id在该范围内,则定价是指定给文本框的值。 – bdg

回答

1

你做的不正确比较。

应该是这样:

if(tds[T].id == "_13a" || tds[T].id == "_23f") 

在代码中,表达tds[T].id == "_13a","_23f"评估为“_23f”由于逗号,因为它变得truthy,所有的条件是否得到执行。

您可以在控制台检查:console.log((2 == 3, "_23f"));

这就是说,你应该考虑使用交换机块的代码更好的表现,使未来的变化更容易。

var pricing = 0; 
    var extraLeg = 9.99; 
    var standardSeat = 4.99; 
    var upFront = 9.99; 
    var extraLeg1 = 13.99; 

    var tds = document.getElementsByTagName("td"); 
    for (var T = 0; T<tds.length; T++) 
    { 
     switch (tds[T].id) { 
      case "_1a": 
      case "_1f": 
       pricing = extraLeg1; 
       break; 
      case "_2a": 
      case "_6f": 
       pricing = upFront; 
       break; 
      case "_7a": 
      case "_11f": 
       pricing = standardSeat; 
       break; 
      case "_12a": 
      case "_13f": 
       pricing = extraLeg; 
       break; 
      case "_13a": 
      case "_23f": 
       pricing = standardSeat; 
       break; 
     } 
    } 

编辑:如果你想添加更多的像“_1b”,“_1c”那么你就可以联合起来的情况下,只要你的价格是一样的。例如:

switch (tds[T].id) { 
     case "_1a": 
     case "_1b": 
     case "_1c": 
     case "_1d": 
     case "_1e": 
     case "_1f": 
      pricing = extraLeg1; 
      break; 
     case "_2a": 
     case "_6f": 
      pricing = upFront; 
      break; 
     case "_12a": 
     case "_13f": 
      pricing = extraLeg; 
      break; 
     case "_7a": 
     case "_11f": 
     case "_13a": 
     case "_23f": 
      pricing = standardSeat; 
      break; 
    } 
+0

好的谢谢,在开关块的情况下,我将不得不宣布每个td作为一个新的情况下,或在那里为此设置一个范围,如
“_1a”,“_ 1b”,“_ 1c”,“_ 1d” “_1e”,“_ 1f”都是一种情况? – bdg

+0

检查我的编辑,并通过http://www.w3schools.com/js/js_switch.asp了解更多关于开关。 – Ananth

+0

这仍然给我所有的TD元素设置为相同的价格相同的问题。 – bdg