2016-11-25 64 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]
相關問題