-1

フォームのすべてのラジオ ボタンを調べて、チェックされたものを含む td をペイントする必要があります。ループ内で TD ID の変数を渡すことができません (aca):

function veamos() {

    var allElems = document.getElementsByTagName('input');

        for (i = 0; i < allElems.length; i++) {

           if (allElems[i].type === 'radio' && allElems[i].checked) {

           var aca="pinta"+i;

                document.getElementById(aca).style.backgroundcolor = '#9e0000';

           } else {
            //document.getElementById(estetd).style.backgroundColor = '#ffffff';
           }        
        }       
}

document.getElementById('pinta1').style.backgroundColor = '#9e0000'、機能しているようです...すべてのフォームをループする変数を構築できません

何か案は?ありがとうございます。

4

3 に答える 3

1

私があなたの質問を正しく理解していれば、2 つの選択肢があると思います。

function veamos () {
  var allElems = document.getElementsByTagName('input');
  for (var i = 0, len = allElems.length; i<len; i++) { /* do not use .length in the loop condition, that will have very bad performance on element arrays returned by getElementsByTagName. */
    var elem = allElems[i];
    if (elem.type==='radio') {
       /* Option 1: This depends on the HTML structure, where is the TD in relation to the input? */
       var td = elem.parentNode; /* if it is 2 levels up then use elem.parentNode.parentNode */
       /* Option 2: This depends on having an ID on the <input> and <td> that are similar, like this <input id="r1"> <td id="r1TD"> */
       var td = document.getElementById(elem.id + 'TD');
       td.style.backgroundColor = elem.checked ? '#9e0000' : '#ffffff';
       /* I would recommend using a class name (CSS) instead of using a hard coded color! */
    }
  }
}
于 2012-06-27T23:34:18.887 に答える
1

タイプミスがあります。Javascript は大文字と小文字を区別します。変化する

document.getElementById(aca).style.backgroundcolor = '#9e0000';

document.getElementById(aca).style.backgroundColor = '#9e0000';

...

更新実例を見る

于 2012-06-27T23:14:31.023 に答える
0

その代わり

document.getElementById(aca).style.backgroundcolor = '#9e0000';

する必要があります

allElems[i].style.backgroundcolor = '#9e0000';
于 2012-06-27T23:14:41.347 に答える