0
<head>
    <script type="text/javascript">
        var p=0;
    </script>
</head>
<body>
<form name="quiz" method="post" action="evaluate.jsp">
   <script type="text/javascript">
                   <input type="radio" name="q"+p value="hi">charles
                   <input type="submit">
     </script>

  </form>  
  </body>      

q0のようなラジオボタンの名前を連結する方法を教えてください。forループを使用して、ラジオボタンq0、q1、q2などの名前をインクリメントする必要があります。手伝ってください..

4

4 に答える 4

1

以下の方法で JavaScript コードをフォーマットします。

<script type="text/javascript">

var p=0;
document.write('<input type="radio" name="q'+p+'" value="hi">charles');
document.write('<input type="submit">');

</script>
于 2012-10-28T05:20:30.460 に答える
0

document.write() (場合によっては、ブラウザーによるページ読み込みの最適化を妨げる可能性があります) に代わる方法は、読み込み後に DOM を変更し、スクリプトを使用して必要なnameプロパティを入力タグに追加することです。

<head>
 <script type="text/javascript">
  var p=0;
 </script>
</head>
<body>

<form name="quiz" method="post" action="evaluate.jsp">
    <input id="radio1" type="radio" value="hi">charles
    <input type="submit">
</form>  
<script type="text/javascript">
    document.getElementById("radio1").name = "q" + p;
</script>
</body>     
于 2012-10-28T05:29:57.863 に答える
0

入力を作成するには、これを script タグ内に配置する必要があります。

function createInputs(totalInputsNeeded) {
    var rdo, parent;

    parent = document.getElementById('parentId');

    for (var i = 0; i < totalInputsNeeded; i++) {        
        rdo = document.createElement('input');

        rdo.setAttribute('type','radio');
        rdo.setAttribute('name','q' + i.toString());
        rdo.setAttribute('value', 'yourValue');

        parent.appendChild(rdo);
    }
}

既存のラジオの名前に追加するだけの場合は、次のようにできます。

function appendToNames() {
    var elems = document.getElementsByName('q');

    for (var i = 0; i < elems.length; i++) {
        elems[i].setAttribute('name', elems[i].getAttribute('name') + i.toString());
    }
}
于 2012-10-28T05:33:28.173 に答える
0

OPが彼が述べたように、要件に関して考えられる問題を説明することは十分に重要だと思うので、このjsFiddleを作成して、すべてのラジオボタンに同じ名前を割り当てることと、各ラジオボタンの名前を異なるものに変更することの違いを示しました.

最初の行のラジオ ボタンはすべてチェック可能ですが、オフにするものがないため、チェックを外すことはできません (同じ名前の他のラジオ ボタンでオフに切り替えることはできません)。

2 番目の行のラジオ ボタンは、ラジオ ボタン グループと同じように機能します... 一度にチェックできるラジオ ボタンは 1 つだけです。

http://jsfiddle.net/2ENZP/1/

HTML:

<form name="quiz" method="post" action="evaluate.jsp">
    <h3>Buttons with Differing Names</h3>
    <fieldset id="buttonsDiffNames">
    </fieldset>

    <h3>Buttons with Same Names</h3>
    <fieldset id="buttonsSameNames">
    </fieldset>
    <input type="submit">
</form>  

Javascript:

var radioBtns = [
    {id:0,name:"charles"},
    {id:1,name:"diana"},
    {id:2,name:"peter"},
    {id:3,name:"sofia"},
    {id:4,name:"reggie"},
    {id:5,name:"jim"}
];

// set up templates for use by the examples, below.
var tmpl  = '<input type="radio" name="{ID}" value="{ID}">{NAME}';
var tmpl2 = '<input type="radio" name="{ID}" value="{NAME}">{NAME}';

// This one will populate the first list, with buttons
// that all have different names
function populateWithDifferingNames(){
    // get a ref to the fieldset we're going to add these to
    var fieldSet = document.getElementById("buttonsDiffNames");
    // create an array to act as a StringBuilder
    var sb = [];

    // loop through your dataset... 
    for(var i = 0; i < radioBtns.length; i++){
        // add a string to the sb array, replacing the templated
        // areas with the incremented radio button id and the name
        // from the dataset
        sb.push(tmpl.replace(/\{ID\}/gi,"q" + radioBtns[i].id).replace("{NAME}", radioBtns[i].name));
    }
    // set the fieldset's innerHTML to the joined string representation
    // of the sb array
    fieldSet.innerHTML = sb.join("\n");
}

// Same idea, but with matching names
function populateWithSameNames(){
    var fieldSet = document.getElementById("buttonsSameNames");
    var sb = [];

    for(var i = 0; i < radioBtns.length; i++){
        sb.push(tmpl2.replace(/\{ID\}/gi,"q").replace(/\{NAME\}/gi, radioBtns[i].name));
    }
    fieldSet.innerHTML = sb.join("\n");
}

window.onload = function() {
    populateWithDifferingNames();
    populateWithSameNames();
}();

</p>

于 2012-10-28T06:05:11.410 に答える