2016-11-25 111 views
0

我有很多按钮。如果我被他们的一个点击调用这个函数:如何从单选按钮中为元素设置属性而不提交

function addOptions(id) 
{ 
    var button = document.getElementById(id); //clicked button 
    radioDiv = document.querySelector("div.radioDiv"); 
    radioDiv.style.visibility = "visible"; 
    var raz = document.getElementsByName('status'); //get radioButtons 
    $(".radioDiv").ready(function() { 
    $('input[type=radio][name=status]').change(function(){ 

     /*Here I'm trying to set attribute to only one button but 
      here the problem: when I click a few buttons (example: 1st then 2nd, then 3rd) 
      and on 3rd button I choice the "radioButton" this code is set Attribute for 
      all of them (3) */ 

       button.setAttribute("status", this.value); 
      }); 
      }); 
     } 

enter image description here

这里的index.html。 RadioDiv默认隐藏

<div class="layer1"> 
    <div class="radioDiv"> 
     <input type="radio" value="sale" name="status">111 
     <input type="radio" value="inverted" name="status">222 
    </div> 
    </div> 
    <div class="layer2"></div> 

所以,我需要从RadioButton的值设置按钮的属性。

+0

你能发布完整的代码?按钮也是'html'? –

+0

按钮代码正在动态生成。这里是完整的html:'button class =“class1”id =“1.1”onclick =“addOptions('1.1')' –

+0

@Teemu它的工作方式没有'$(”。radioDiv“)。 ...})'just'$('input [type = radio] [name = status]')。change(function(){..}' –

回答

1

在js文件的开头使用全局变量。

var lastButton; 
function addOptions(id) { 
    $(".radioDiv input[type=radio][name=status]").prop("checked", false); 
    lastButton = document.getElementById(id); //last clicked button 
    var status = lastButton.getAttribute("status"); 
    $(".radioDiv input[type=radio][name=status][value='" + status +"']").prop("checked", true); 
    $(".radioDiv").prop("visible", true); 
    $('input[type=radio][name=status]').click(function(){ 
    lastButton.setAttribute("status", this.value); 
    }); 
} 
+0

以及如何在radioDiv中设置选中的值?例如:我们设置第一个按钮的值,然后点击第二个按钮,我们看到radioButton没有另外当我们回到第一个按钮时,我们看到radioButton可能是错误的(如果在前一个按钮上我们发生了变化)编辑它) –

+0

好吧,我不确定你想要达到什么目的(你应该用他们的名字来称呼事情,因为你似乎在混淆价值和状态,按钮和放射性元素),如果你使用正确的单词并解释清楚你想达到什么我想我可以帮助你。 – Tchopane

+0

http://prntscr.com/dbmx6p –

1

如果你有以下标记:

<div id="status" class="radioDiv"> 
    <input type="radio" value="sale" name="status">111 
    <input type="radio" value="inverted" name="status">222 
</div> 

你可以抓住两个单选按钮为节点列表有:

var statusRadioButtons = document.getElementById('status').getElementsByTagName('input'); 

然后每个按钮是在一个项目节点列表

  • statusRadioButtons[0]
  • statusRadioButtons[1]
相关问题