2017-10-06 111 views
0

我知道.value我可以得到所選項目的價值,但我需要的是所選項目的名稱。例如,我有下拉菜單,其中包含兩個項目:Class 1和Class 2. Class 1的值是50,Class 2的值是60.如果我使用DMT5.value(Class 1的值),則獲得50 ,但我需要的是名字本身,即「1級」。所以,我嘗試使用此代碼:使用.text時Javascript返回「Undefined」?

var classRate = document.getElementById("DMT5") 
var selectedClassRate = classRate.options[classRate.selectedIndex].text 

但是,我得到一個錯誤:無法獲取的未定義或爲空引用屬性 '文本'

*編輯: 這裏的DMT5:

<td style="padding-right: 9px;"> 
            <select id="DMT5" onchange="jCalculate()" style="width: 143px; padding: 2px 5px 2px 5px;"> 
            <option></option> 
            <script runat="server" language="cache"> 
                  do INIT^CSP999 
                  #import MX 

                  set Origin=$g(%session.Data("VIPRates","Origin")) 
                  set ID=$g(%session.Data("VIPRates","ID")) 

                  &sql(DECLARE cCursor0 CURSOR FOR 
                   SELECT VIPRatesItems_Class1, VIPRatesItems_Class2 
                   INTO :r1,:r2 
                   FROM MX.VIPRates_VIPRatesItems 
                   WHERE VIPRates->Customer->CustCode=:ID AND VIPRatesItems_Country=:Origin) 

                  &sql(OPEN cCursor0) 
                  &sql(FETCH cCursor0) 
                  WHILE SQLCODE=0{ 
                   w "<option value='"_r1_"'>Class 1</option>" 
                   w "<option value='"_r2_"'>Class 2</option>" 
                   &sql(FETCH cCursor0) 
                  } 
                  &sql(CLOSE cCursor0) 


                 </script> 
            </select> </td> 
           </tr> 

這是我的JS:

function jCalculate(){ 
document.getElementById("s1").style.display="inline" 
document.getElementById("s2").style.display="inline" 
document.getElementById("s4").style.display="inline" 
    var UnitMeasure="kg" 
    var Country=PackageT8.value 

    var Dm = 3500 
    repack = 0 
    Dimension=0 
    Volumetric=0 
    SelectedWt=0 
    OtherCharges=0 

    if (Country == "UNITED STATES OF AMERICA") { 

     var Class1 = DMT5.value 
     var Dm = 166 
    } 
    else if (Country == "UNITED KINGDOM") { 
     var Class1 = DMT5.value 
     Dm=6000 
     alert(DMT5.value) 
    } 
    else if (Country == "HONG KONG") { 
     var Class1 = DMT5.value 
    } 
    else if (Country == "CHINA") { 
     var Class1 = DMT5.value  
    } 
    else if (Country == "SINGAPORE") { 
     var Class1 = DMT5.value  
    } 

    if (Country == "UNITED STATES OF AMERICA") { 
     var Class2 = DMT5.value 
    } 
    else if (Country == "UNITED KINGDOM") { 
     var Class2 = DMT5.value 
    } 
    else if (Country == "HONG KONG") { 
     var Class2 = DMT5.value 
    } 
    else if (Country == "CHINA") { 
     var Class2 = DMT5.value 
    } 
    else if (Country == "SINGAPORE") { 
     var Class2 = DMT5.value 
    } 

    var Volumetric= (DMT1.value*DMT2.value*DMT3.value)/Dm 
    if (isNaN(Volumetric)) var Volumetric=0 

    if(Volumetric % 1 != 0) Volumetric=Volumetric+1 
    var Volumetric=parseInt(Volumetric) 

    if (DMT5.selectedIndex=="1") var ClassAmt=Class1 
    if (DMT5.selectedIndex=="2") var ClassAmt=Class2 

    var ActualWt=DMT6.value 
    if (isNaN(ActualWt)) var ActualWt=0 
    if (ActualWt>Volumetric)var SelectedWt=ActualWt 
    if (ActualWt<=Volumetric)var SelectedWt=Volumetric 

    var VAT=(SelectedWt*ClassAmt)*(12/100) 
    if (isNaN(VAT)) var VAT=0 

    if (CB1.checked==true){ 
     var repack=3 
    } 

    var AmountDue=(SelectedWt*ClassAmt)+ VAT 

    if (isNaN(AmountDue)) var AmountDue=0 

    if (Country=="U.S.A"){ 
    var UnitMeasure="lb/s" 
    } 

    DMT9.value=SelectedWt 
    DMT11.value=ClassAmt 
    DMT12.value=Volumetric 
    document.getElementById("AmountDue").innerHTML=AmountDue.toFixed(2) 
    document.getElementById("s1").innerHTML="Volumetric Weight: "+Volumetric + UnitMeasure 
    document.getElementById("s2").innerHTML="Chargable Weight: "+SelectedWt + UnitMeasure 
    document.getElementById("s3").style.display="inline" 

    //----OTHER CHARGES 
    if (Country=="U.S.A"){ 
     var Volumetric=((DMT1.value * 2.54) * (DMT2.value * 2.54) * (DMT3.value * 2.54))/3500 
     if (isNaN(Volumetric)) var Volumetric=0 
     if(Volumetric % 1 != 0) Volumetric=Volumetric+1 
     var Volumetric=parseInt(Volumetric) 

     var ActualWt=DMT6.value 
     ActualWt=ActualWt/2.2 
     if(ActualWt% 1 != 0) ActualWt=ActualWt+1 
     var ActualWt=parseInt(ActualWt) 


     if (isNaN(ActualWt)) var ActualWt=0 
     if (ActualWt>Volumetric)var SelectedWt=ActualWt 
     if (ActualWt<=Volumetric)var SelectedWt=Volumetric 
    } 


    if (SelectedWt<=3){ 
     if (Country=="U.S.A"){ 
      Dimension = ((DMT1.value * 2.54) * (DMT2.value * 2.54) * (DMT3.value * 2.54))/3500 
     } 
     else{ 
      Dimension = (DMT1.value * DMT2.value * DMT3.value)/3500 
     } 

     if (isNaN(Dimension)) var Dimension = 0 
     if(Dimension % 1 != 0) Dimension =Dimension +1 
     var Dimension =parseInt(Dimension) 


     if ((DMT4.value=="MMnl" || DMT4.value=="Luzon") && (Country!="U.S.A")){ 
      var OtherCharges = 4.48 
     } 
     else if ((DMT4.value=="Visayas" || DMT4.value=="Mindanao") && (Country!="U.S.A")){ 
      var OtherCharges = 4.62 
     } 
     else if(DMT4.value=="Luzon"){ 
      var OtherCharges = 4.48 
     } 
     else if (DMT4.value=="Visayas" || DMT4.value=="Mindanao"){ 
      var OtherCharges = 4.62  
     } 

    } 

    if (SelectedWt>=4){  
     if (Country=="U.S.A"){ 
      Dimension = ((DMT1.value * 2.54) * (DMT2.value * 2.54) * (DMT3.value * 2.54))/3500 
     } 
     else{ 
      Dimension = (DMT1.value * DMT2.value * DMT3.value)/3500 
     } 

     if (isNaN(Dimension)) var Dimension =0 
     if(Dimension % 1 != 0) Dimension =Dimension +1 
     var Dimension =parseInt(Dimension) 

     if ((DMT4.value=="MMnl" || DMT4.value=="Luzon") && (Country!="U.S.A")){ 
      var OtherCharges = 2.30 * Dimension 
     } 
     else if ((DMT4.value=="Visayas" || DMT4.value=="Mindanao") && (Country!="U.S.A")){ 
      var OtherCharges = 2.50 * Dimension 
     } 
     else if(DMT4.value=="Luzon"){ 
      var OtherCharges = 2.30 * Dimension 
     } 
     else if (DMT4.value=="Visayas" || DMT4.value=="Mindanao"){ 
      var OtherCharges = 2.50 * Dimension   
     } 
    } 

    if (Country=="U.S.A" && DMT4.value=="MMnl"){ 
     var OtherCharges=0 
    } 

    if (PaymentT3.value=="For Pick Up"){ 
     var OtherCharges=0 
    } 
    var AmountDue=AmountDue+OtherCharges+repack 
    if (isNaN(AmountDue)) var AmountDue=0 

    DMT7.value=VAT.toFixed(2) 
    DMT8.value=OtherCharges.toFixed(2) 


    #server(..cAmountInPeso(AmountDue.toFixed(2),DMT13.value,DMT14.value))# 
    document.getElementById("s4").innerHTML="Delivery Charges: USD "+ OtherCharges.toFixed(2) 

} 

我想我已經解決了這個問題,通過使用「selectedInde X'。我得到所選項目的索引。

+1

請你也加入您'HTML'?與值,類等,所以它可以更容易理解。 –

+1

而不要求'text'屬性它不是不確定的?你可以登錄到控制檯'classRate.options [classRate.selectedIndex]'? – Walk

+1

在運行Javascript之前是否定義了選擇「DMT5」?我認爲你的代碼應該可以工作。 – CharlesEF

回答

0

使用的getAttribute

classRate.options[classRate.selectedIndex].getAttribute("name"); 
0
if(classRate.options.length > classRate.selectedIndex) 
    var selectedClassRate = classRate.options[classRate.selectedIndex].text; 
+2

這是一個相當低質量的答案。您應該添加一些關於如何解決OP與代碼相關的問題的解釋。 – Andy

+0

]]我的目的是顯示錯誤的位置:]] –