从单选按钮传递变量

时间:2013-02-26 23:11:35

标签: javascript html forms radio-button

我试图将变量从单选按钮传递到javascript链接中的变量。我无法获得变量'testVar',它是在for循环检查中检查单选按钮,传递给链接。我很难过,这是完整的代码:

 <form>
    <label>Priority 1</label>
    <input type="radio" id="priority" name="priorityN" onclick="getResults();" value="prior1"  />
    <label>Priority 2</label>
    <input type="radio" id="priority" name="priorityN" onclick="getResults();" value="prior2"  />
</form>

<br /><br />

<div id="myLink"></div>

<script>

var testVar = '';

function getResults() {
var radios = document.getElementsByName("priorityN");

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

document.getElementById("myLink").innerHTML = '<a href=\"' + 'www.example.com?pri=' + testVar + '\" onclick=\"$(this).modal({width:880, height:460}).open(); return false;\" >' + 'My Modal Link' + "</a>";

</script>

2 个答案:

答案 0 :(得分:1)

SEE LIVE DEMO

根据我的评论,您可以进行一些更改。

  1. id属性应该是唯一的。您可以使用类名而不是id

    <form>
        <label>Priority 1</label>
        <input type="radio" class="priority" name="priorityN" onclick="getResults();" value="prior1" />
        <label>Priority 2</label>
        <input type="radio" class="priority" name="priorityN" onclick="getResults();" value="prior2" />
    </form>
    
  2. 如果您想在每次按下不同的单选按钮时重新生成链接,则需要在getResults功能中移动它。否则,它将使用当前初始值testVar生成,这是一个空字符串。

    function getResults() {
        var testVar;
        var radios = document.getElementsByName("priorityN");
        for (var i = 0; i < radios.length; i++) {
            if (radios[i].checked) {
                testVar = (radios[i].value);
                document.getElementById("myLink").innerHTML = '<a href=\"' + 'www.example.com?pri=' + testVar + '\" onclick=\"$(this).modal({width:880, height:460}).open(); return false;\" >' + 'My Modal Link' + "</a>";
                break;
            }
        }
    }
    

答案 1 :(得分:0)

我可以使用现代浏览器querySelector而忘记循环:

function getResults() {
  var checked = document.querySelector('[name="priorityN"]:checked'),
      link = document.querySelector('#myLink');
  link.innerHTML = '<a href="...'+ checked.value +'">...</a>';
}