2009-12-23 10 views
5

मेरे पास एक HTML फॉर्म है। जब आप बटन पर क्लिक करते हैं, तो जावास्क्रिप्ट फ़ंक्शन एक नया फ़ील्ड जोड़ता है। मैं फ़ंक्शन को फ़ील्ड के लिए 'लेबल' भी जोड़ने की कोशिश कर रहा हूं।एचटीएमएल फॉर्म के लिए इनपुट फ़ील्ड बना रहा है ... लेकिन इसके लिए 'लेबल' भी जोड़ रहा है?

मैं document.createElement ("लेबल") का उपयोग की कोशिश की है, लेकिन वह नहीं करता है मुझे innerHTML बदल (या शायद मैं गलत यह कर रहा हूँ ..), और न ही

यहाँ एक बंद जोड़ने मेरा कोड है धन्यवाद! var instance = 2;

 function newTextBox(element) 
     {  
      instance++; 
      // Create new input field 
      var newInput = document.createElement("INPUT"); 
      newInput.id = "text" + instance; 
      newInput.name = "text" + instance; 
      newInput.type = "text"; 
      instance++; 

      document.body.insertBefore(document.createElement("BR"), element); 
      document.body.insertBefore(newInput, element); 

     } 
    </script> 
</head> 


<body> 
    <LABEL for="text1">First name: </LABEL> 
    <input id="text1" type="text" name="text1"> 
    <LABEL for="text2">Last name: </LABEL> 
    <input id="text2" type="text" name="text2"> 



    <input type="button" id="btnAdd" value="New text box" onclick="newTextBox(this);" /> 
</body> 

+0

पोस्ट अपने कोड है जहाँ आप एक 'document.createElement ('लेबल') कर की कोशिश की' इसलिए हम इसे डीबग कर सकते हैं। – philfreo

+0

क्षमा करें, इसे हटा दिया गया क्योंकि मैंने सोचा था कि यह बेकार था: \t \t \t var label = document.createElement ("LABEL"); \t \t \t label.htmlFor = newInput.id; \t \t \t \t label.value = 'पहला नाम'; – Matt

+0

'label.value' जैसी कोई चीज़ नहीं है। – bobince

उत्तर

6
function newTextBox(element) 
      {    
        instance++; 
        // Create new input field 
        var newInput = document.createElement("INPUT"); 
        newInput.id = "text" + instance; 
        newInput.name = "text" + instance; 
        newInput.type = "text"; 

        var label = document.createElement("Label"); 

        label.htmlFor = "text" + instance; 
        label.innerHTML="Hello"; 
        instance++; 

        document.body.insertBefore(document.createElement("BR"), element); 
        document.body.insertBefore(newInput,element); 
        document.body.insertBefore(label, newInput); 

ध्यान दें कि लेबल टैग के for विशेषता, संपत्ति htmlFor लेबल वस्तु जावास्क्रिप्ट

+1

आप 'label.for' का उपयोग नहीं कर सकते हैं। प्रोटो बास्सी का जवाब सही है। वास्तव में – Paul

+0

। ये दोनों जवाब कुछ तरीकों से गलत हैं। वे दोनों आंतरिक HTML का उपयोग करने का समर्थन करते हैं जो खराब है लेकिन अधिक महत्वपूर्ण है, 'for' लेबल.html का उपयोग करके सेट किया गया है – Rafe

6

में विन्सेन्ट से उदाहरण के लिए काम नहीं करता है से मेल खाती है।

इस प्रयास करें:

var newlabel = document.createElement("Label"); 
    newlabel.setAttribute("for",id_from_input); 
    newlabel.innerHTML = "Here goes the text"; 
parentDiv.appendChild(newlabel); 
+2

यह सही उत्तर है। 'SetAttribute' का उपयोग करके 'के लिए विशेषता' सेट की जानी चाहिए। डोमेन निर्माण के सुझाव के लिए – Paul

+0

-1 और document.createTextNode – Rafe

+0

@Rafe के बजाय आंतरिक HTML उपयोग के लिए, कृपया इस प्रकार का उदाहरण दें कि आप किस प्रकार "लेबल" पर सेट करेंगे और आप टेक्स्टनोड पर एक विशेषता सेट करने जा रहे हैं। मुझे कोई फर्क नहीं पड़ता कि आपकी टिप्पणी किसी भी तरह सहायक है। – Dinkheller

0
<div id="somediv"> 
some div 
</div> 

<script> 

var instance = 0; 

function newTextBox(element){    

instance++; 
// Create new input field 
var newInput = document.createElement("INPUT"); 
newInput.id = "text" + instance; 
newInput.name = "text" + instance; 
newInput.type = "text"; 

var newlabel = document.createElement("Label"); 
newlabel.setAttribute("for","text" + instance); 
newlabel.innerHTML = "Here goes the text"; 
document.getElementById("somediv").appendChild(newlabel); 
document.getElementById("somediv").appendChild(newInput); 
} 

</script> 
संबंधित मुद्दे