2012-01-06 46 views
7

tôi kiểm tra muốn phát thanh nút tự động: Tôi đã thử mã này, nhưng nó không hoạt động:. nút vô tuyến điện có 3 giá trị khác nhau, tôi muốn chọn nút radio với giá trị 'sạch"séc javascript nút radio tự động

thế nào ?! tôi có thể kiểm tra tự động nút radio trên một trang web Cảm ơn

function getElements() 
    { 

    for (i=0; i<document.getElementsByTagName('input').length; i++) 
    { 
    //if (document.getElementsByTagName('input')[i].type == 'radio') 
    if(document.getElementsByTagName('input')[i].type=='radio') 
    { 
     //if (document.getElementsByTagName('input')[i].value=='clean') 
     document.getElementsByTagName('input')[i].click(); 
    } 
    } 

tôi sửa đổi các mã như sau:

for (i=0; i<document.getElementsByTagName('input').length; i++) 
    { 

    if(document.getElementsByTagName('input')[i].type=='radio') 
    { 


     if(document.getElementsByTagName('input')[i].value == "clean") 
     { 
     document.getElementsByTagName('input')[i].checked =true; 
     } 

    } 
    } 

nhưng nó vẫn không hoạt động: (

nút radio nằm trong khung nội tuyến, có thể đó là lý do mã không hoạt động?

+1

yeah, tôi biết Manse đó, và mã của bạn là tuyệt vời nhưng tôi đang đấu tranh trong việc làm cho nó hoạt động không phải vì lỗi của bạn nhưng nó là của tôi hoặc thiếu kiến ​​thức của tôi. Tôi sẽ chấp nhận câu trả lời của bạn! –

+0

vâng vấn đề là iframe và tôi đã sửa chữa và mọi thứ đang hoạt động tốt trên mã của bạn Manse Rất cám ơn, bạn là người của tôi! –

Trả lời

14

Đưa nút radio của bạn "tên" sẽ làm cho mọi việc dễ dàng hơn nhiều

<input type="radio" name="myradios" value="clean"/> 
<input type="radio" name="myradios" value="somethingelse"/> 

var elements = document.getElementsByName('myradios'); 
for (i=0;i<elements.length;i++) { 
    if(elements[i].value == "clean") { 
    elements[i].checked = true; 
    } 
} 

dụ làm việc: http://jsfiddle.net/Dwzc9/

Cập nhật

getElementsByName dường như không được hỗ trợ trong tất cả các trình duyệt IE phiên bản ... để bạn có thể sử dụng các thông tin sau dựa trên ví dụ ban đầu của mình:

var allElems = document.getElementsByTagName('input'); 
for (i = 0; i < allElems.length; i++) { 
    if (allElems[i].type == 'radio' && allElems[i].value == 'clean') { 
     allElems[i].checked = true; 
    } 
} 

Ví dụ làm việc: http://jsfiddle.net/Dwzc9/2/

+0

Manse mã của bạn đang hoạt động nhưng vấn đề là iFrame tôi nghĩ. Hoặc cái gì khác và vì thế tôi không thể chạy nó thành công. –

3

bạn có thể thử đặt thuộc tính "đã chọn" thay thế.

var getElements = function() 
{ 
    var x = document.getElementsByTagName("input"); 
    var oldname = ''; 

    for(var i = 0; i < x.length; i++) 
    { 
     if(x[i].type == 'radio' && x[i].name != oldname && x[i].value == 'clean') 
     { 
      x[i].checked = true; 
      oldname = x[i].name; 
     } 
    } 
}; 

Vấn đề với chức năng này là nó sẽ cố gắng rà soát tất cả các nút radio, vì vậy nếu họ thuộc về một nhóm (mà thường là trường hợp), chỉ có các nút radio cuối cùng từ mỗi nhóm sẽ được lựa chọn . Nếu đó là ý định của bạn, sau đó tuyệt vời, nếu không nó sẽ suy nghĩ về cách quyết định nút nào được chọn, và phá vỡ vòng lặp. Bạn có thể thấy trong hàm ở trên mà tôi đã quyết định chỉ chọn nút đầu tiên trong nhóm, bằng cách kiểm tra thuộc tính name của phần tử.

Tôi hy vọng điều này sẽ giúp ích cho bạn!

  • Matt

CẬP NHẬT

Một cách khác để xử lý việc này, sử dụng jQuery, sẽ là:

var getElements = function(){ 
    var oldname = ''; 
    $.each($('input[type="radio"]'), function(){ 
    if($(this).attr('name') != oldname && $(this).val() == 'clean'){ 
     $(this).checked = true; 
     oldname = this.name; 
    } 
    }); 
}; 
+1

Điều này sẽ đánh dấu nút radio cho mọi nhóm trên trang? OP chỉ muốn kiểm tra chúng khi chúng có giá trị "sạch" – ManseUK

+0

. Thuộc tính name là cách các nút radio html được "nhóm lại"."Mỗi nút có cùng tên nằm trong một nhóm. – Matt

+0

OH, tôi đã đọc sai câu hỏi. Tôi sẽ sửa lỗi này. – Matt