使用javascript更改onclick值

时间:2012-12-29 19:01:56

标签: javascript html

我对JS很新,也许这是一个非常平庸的问题,但我仍然无法弄清楚出了什么问题。我有这个简单的HTML代码:

<span>1</span>
<input id="check1" type="radio" value="a1"/>
<span>2</span>
<input id="check2" type="radio" value="b2"/>
<span>3</span>
<input id="check3" type="radio" value="c3"/>
<span>4</span>
<input id="check4" type="radio" value="a4"/>
<span>5</span>
<input id="check5" type="radio" value="b5"/>

<input id="red" type="button" value="Go" onclick=""/>

我想要实现的是,基于收音机检查更改onclick属性。 例如,如果检查check1和check2,请转到google.com,如果check1和check3转到jsfiddle.net等。所以我写了一个简单的Javascript:

window.onchange = function redirect(){

  if (document.getElementById('check1').checked && document.getElementById('check2').checked) {
    location.href='www.google.com';
    // document.getElementById('red').onclick="www.google.com"
  }

  else if (document.getElementById('check1').checked &&    document.getElementById('check3').checked) {
    location.href='www.jsfiddle.net';
    // document.getElementById('red').onclick="window.open('www.jsfiddle.net')"
  }
}

Here你可以找到一个JS小提琴。 我想做的是设置onclick属性就像我用图像一样,使用getElementById然后设置他的源,所以我写了document.getElementById('red')。onclick =“window.open('random page') “但由于某种原因,我无法理解它不起作用。

问题:

1)正如你在我的代码中看到的,我写了一个location.href ='address',显然不要等待用户点击按钮,所以这不是一个解决方案,我怎样才能使这个工作? / p>

2)有没有办法让这段代码更具可扩展性?我的意思是,将来如果我想添加另一个收音机,我将不得不手动修改代码并插入另一个,如果,我想的是:

var radio = document.getElementByName('radio') //not sure if this is the right getElement
for (var i=1; i<radio.lenght; i++){
   if radio[i].checked{ //is this right?
      for (var n=i+1; n<radio.lenght; n++){
          if radio[n].checked{
             document.getElementById('red').onclick="window.open('random page')"
          }
       }
 }

欢迎对我的代码提出任何建议。

2 个答案:

答案 0 :(得分:1)

在JS Fiddle中尝试这个。它包含了如何监听按钮的onclick事件以及获取单选按钮的选中值。

HTML部分:

    <form action="">
    <input type="radio" name="vehicle" value="Yes" id='yes'>Yes<br>
    <input type="radio" name="vehicle" value="No" id='no'>No
    </form>
    <input id="red" type="button" value="let's go"/>

JS部分:

    document.getElementById('red').onclick = function() {
       if (document.getElementById('yes').checked) {
           alert('I have a Vehicle.');
       } else if(document.getElementById('no').checked) {
           alert('I don\'t have a Vehicle.');
       } else {
           alert('No answer.');
       }
   }

如果您使用单选按钮,并且您希望一次只能为用户选择一个,则必须为它们设置相同的名称属性。

您还可以使用单选按钮的value属性来存储重定向URL。

这是一个更有用的例子。

HTML部分:

    <form action="">
        <input type="radio" name='redirect' value='https://www.google.com/' id='google'>Google<br />
        <input type="radio" name='redirect' value='http://www.jsfiddle.net/' id='jsFiddle'>JS Fiddle<br />
        <input type="radio" name='redirect' value='https://www.facebook.com/' id='Facebook'>Facebook
    </form>

    <input id="red" type="button" value="let's go"/>

JS部分:

    document.getElementById('red').onclick = function() {
       var options = document.getElementsByName('redirect'),
           length = options.length,
           i = 0;

       for (i; i < length; i++) {
           if (options[i].checked) {
               window.open(options[i].value);
           }
       }
    }

答案 1 :(得分:0)

if (document.getElementById('check1').checked&&document.getElementById('check2').checked)
{
    document.getElementById('red').onclick=function(){
      window.location.href ='http://www.google.com';
     };
}

此代码将函数绑定到id ='red'的元素的onclick事件。所以添加一堆这样的条件,并在选中/取消选中任何单选按钮时更改onclick绑定。