3

我有一个问题来检测选项选择,而不是使用 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

4 回答 4

7

我想使用 getElementByValue。存在吗??

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

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

document.querySelector('input[value=oneway]');
于 2013-05-13T16:40:31.013 回答
1

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

就我个人而言,我会检查是否选中了第一个单选按钮 [单向]。

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

比在 if 语句中,可以使用布尔值来判断逻辑。

于 2013-05-13T16:39:58.347 回答
1

好吧,如果你不能设置 id 属性,你可以应用一个 CSS 类并使用:

document.getElementsByClassName

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

或者你可以遍历整个 DOM 检查 value 属性。但是,如果不使用 jQuery 或类似的东西,这将非常缓慢并且非常容易出错。

编辑:昆汀的回答更好,document.querySelector 适用于 IE8 或更高版本,您不需要创建 CSS 类。

于 2013-05-13T16:41:03.193 回答
-2

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

于 2013-05-13T16:41:28.800 回答