Javascript getElementBy

时间:2013-05-13 16:35:11

标签: javascript html

我有一个问题是检测选项选择而不是使用getElementById我想使用getElementByValue。它存在吗? 这是我的代码

     <script type="text/javascript">
     var total;


function oneway(){

document.getElementById("return_date").style.visibility = "hidden";

document.getElementById("return_time").style.visibility = "hidden";

}

function return_way(){

document.getElementById("return_date").style.visibility = "visible";

document.getElementById("return_time").style.visibility = "visible";

}

function state_price(){
var way=document.getElementById("direction").value;

var placefrom = document.getElementById("state_from").value;
var placeto   = document.getElementById("state_to").value;

if (direction == "oneway"){
    if ((placefrom=="Batu Pahat" && placeto=="Alor Setar") ||(placefrom =="Alor Setar" && placeto=="Batu Pahat")){

        total=55.00;
        document.booking.total_price.value = total;


    }else if ((placefrom=="Batu Pahat" && placeto=="Bachok")||(placefrom=="Bachok" && placeto=="Batu Pahat"))
    {

        total=60.00;
        document.booking.total_price.value = total; 


    }else if ((placefrom=="Batu Pahat" && placeto=="A Famosa") || (placefrom=="A Famosa" && placeto=="Batu Pahat"))
    {

        total=65.50;
        document.booking.total_price.value = total;

    }else if ((placefrom=="Batu Pahat" && placeto=="Bahau")||(placefrom=="Bahau" && placeto=="Batu Pahat"))
    {
        total=70.00;
        document.booking.total_price.value = total;

    }else if ((placefrom=="Batu Pahat" && placeto=="Bentong") ||(placefrom=="Bentong" && placeto=="Batu Pahat"))
    {
        total=75.50;
        document.booking.total_price.value = total;
    }else if ((placefrom=="Batu Pahat" && placeto=="Kubang Kerian") ||(placefrom=="Kubang Kerian" && placeto=="Batu Pahat"))
    {
        total=80.00;
        document.booking.total_price.value = total;

    }

    else
    {

        document.booking.txttotal.value = "Fail";
        window.alert("Please enter a different destination");

    }
}
else
{



///something else

}
}
</script>

这是我的html编码的一部分

 <tr > 
 <td>Travel Direction:</td>
 <td >

 <input type="radio" name ="direction" value = "oneway"  onclick = "oneway()"/>One Way
 <input type="radio" name ="direction" value = "return"  onclick = "return_way()"/>Return

 </td>
 </tr>

我不想使用这个名字,因为我在我的php编码中使用它。所以我不想使用它。我有什么办法可以像上面提到的那样使用我的javascript(getElementByValue) ?提前谢谢

4 个答案:

答案 0 :(得分:7)

  

我想使用getElementByValue。它存在吗?

没有。您可以编写自己的(循环遍历文档中的所有元素并对其进行测试),或者,如果您关心初始值而不是当前值,则可以将querySelector / querySelectorAllattribute selector一起使用。

由于您使用的单选按钮在正常情况下不会更改值(仅检查状态),因此应该可以正常工作。

document.querySelector('input[value=oneway]');

答案 1 :(得分:1)

这里的一个问题是你使用的是getElementById并且你正在使用这个名称,这是行不通的。

我个人会检查是否检查了第一个单选按钮[单向]。

var isOneWay = document.forms[0].direction[0].checked;

在if语句中,您可以使用布尔值来确定逻辑。

答案 2 :(得分:1)

如果您无法设置id属性,则可以应用CSS类并使用:

document.getElementsByClassName

document.getElementsByClassName(需要IE 9.0或更高版本)

或者您可以遍历整个DOM检查value属性。但是如果没有使用jQuery或者类似的话,这会很慢并且很容易出错。

编辑: Quentin的答案更好,document.querySelector适用于IE8或更高版本,你不需要创建CSS类。

答案 3 :(得分:-2)

使用jQuery它有一个值选择器,例如:$('input [“value = your-value”]')