Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/448.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
若输入两个输入标记有相同的值,那个么只给alert-javascript无jquery_Javascript - Fatal编程技术网

若输入两个输入标记有相同的值,那个么只给alert-javascript无jquery

若输入两个输入标记有相同的值,那个么只给alert-javascript无jquery,javascript,Javascript,这是我现在想要的html,如果任何两个具有相同值的单选按钮,如=“test2”或“test1”向我发出警报 我试图在循环中获得价值 <div class="newfile" > <ul> <li><input value="test1" type="radio" name="abc" onclick="getResults()" /></li> <li><input value=

这是我现在想要的html,如果任何两个具有相同值的单选按钮,如=“test2”或“test1”向我发出警报

我试图在循环中获得价值

<div class="newfile" >
    <ul>
        <li><input value="test1" type="radio" name="abc" onclick="getResults()" /></li>
        <li><input value="test2" type="radio" name ="abc" onclick="getResults()" /></li>
        <li><input value="test1" type="radio" name ="xyz" onclick="getResults()"/></li>
        <li><input value="test2" type="radio" name="xyz" onclick="getResults()"  /></li>

        </ul>
        </div>

函数getResults(){
var radios=document.getElementsByTagName(“输入”);
对于(var i=0;i
但不知道如何比较两个选中按钮的值并获得警报

如果任意两个单选按钮具有相同的值,请向我发出警报,否则将不会发生任何事情。

这样如何:

<script>
function getResults() {
    var radios = document.getElementsByTagName("input");

    for (var i = 0; i < radios.length; i++) {       
        if (radios[i].checked) {
            alert(radios[i].value);
            break;
        }
    }
}

</script>

函数getResults(){
var radios=document.getElementsByTagName(“输入”);
var值=新数组();
对于(var i=0;i
这有帮助吗

<script type="text/javascript">
function getResults() {
    var radios = document.getElementsByTagName("input");
    var values = new Array();
    for (var i = 0; i < radios.length; i++) {       
        if (radios[i].checked) {
            var found = false; //Represents if we have a duplicate
            for(var j = 0; j < values.length; j++) { //Loop through previous items
                if(values[j] == radios[i].value) { //Duplicate?
                    found = true; // Flag it
                    break; //Exit 'j' loop
                }
            }
            values[values.length] = radios[i].value; //Add value to previous items
            if(!found) continue; //If there was no duplicate, continue to next item
            alert(radios[i].value); //There was a duplicate, alert and return
            break;
        }
    }
}
</script>
函数getResults(){
var radios=document.getElementsByTagName(“输入”);
var-dupDetector={};
var值;
对于(var i=0;i

感谢@meiamsome提醒我,如果
是内置的对象属性,那么谓词将始终为true,尽管没有重复项。要避免这种情况,请为其添加一个伪前缀。

如果值是“toString”或“hasOwnProperty”或其他JavaScript对象的内置属性,该怎么办?这将对非重复项发出警报。@meiamsome输入标记的任何值都是对象而不是字符串吗?@neuron问题不在于它是对象-存储值的方式使用对象
dupDetector
。由于它是一个对象,因此已定义了dupDetector['toString']
,因此,如果任何无线电框的值为
'toString'
,它将作为重复项发出警报。@meiamsome抱歉,我看到了。。。如果将谓词更改为
dupDetector[value]==true,它会起作用吗?@neuron大多数情况下,它都会解决这个问题,但是,可能是对象的属性为true,因此,如果没有重复项,检查此项仍会发出警报。
function getResults() {
    var radios = document.getElementsByTagName("input");
    var dupDetector = {};
    var value;

    for (var i = 0; i < radios.length; i++) {       
        if (radios[i].checked) {
         // value = radios[i].value; // add a prefix to avoid built-in property names
            value = 'I_' + radios[i].value;
            if (dupDetector[value]) { 
                alert(radios[i].value);
                return;
            }
            dupDetector[value] = true;
        }
    }
}