2010-11-13 57 views
3

lets'say我有一個表格,像這樣:是否有可能用js/dojo/jquery複製一個表單?

<form name="frmMail" method="POST" action="save.do" dojoType="dijit.form.Form" onSubmit="return this.validate();"> 
    <label for="mailSubject">subject</label> 
    <input type="text" name="mailSubject" 
      dojoType="dijit.form.ValidationTextBox" 
      required="true" 
      value="" /> 
    <label for="mailContent">Content</label>   
    <textarea name="mailContent" 
      dojoType="dijit.Editor" 
      propercase="true" ></textarea> 

    <button dojoType="dijit.form.Button" type="submit" id="save" name="save" >Save</button> 
</form>  

是可以複製該代碼使用JavaScript?現在,我將所有這些都放在div中,並且我複製innerHtml數據,但它不好,導致每個元素的id都被複制。 有什麼想法?

UPDATE

<form name="frmMail" dojoattachevent="onreset:_onReset,onsubmit:_onSubmit" dojoattachpoint="containerNode" action="save.do" method="POST" id="dijit_form_Form_0" dir="ltr" widgetid="dijit_form_Form_0"> 
<label for="mailSubject">subject</label> 
<div wairole="presentation" id="widget_dijit_form_ValidationTextBox_0" class="dijit dijitReset dijitInlineTable dijitLeft dijitTextBox dijitValidationTextBox dijitTextBoxError dijitValidationTextBoxError dijitError dijitTextBoxFocused dijitValidationTextBoxFocused dijitTextBoxErrorFocused dijitValidationTextBoxErrorFocused dijitErrorFocused dijitFocused" role="presentation" dir="ltr" widgetid="dijit_form_ValidationTextBox_0"><div class="dijitReset dijitValidationContainer"><input type="text" wairole="presentation" readonly="" tabindex="-1" value="? " class="dijitReset dijitInputField dijitValidationIcon dijitValidationInner" role="presentation"></div><div class="dijitReset dijitInputField dijitInputContainer"><input type="text" name="mailSubject" autocomplete="off" dojoattachpoint="textbox,focusNode" class="dijitReset dijitInputInner" aria-invalid="true" id="dijit_form_ValidationTextBox_0" tabindex="0" aria-required="true" value=""></div></div> 
<label for="mailContent">Content</label>   
<div widgetid="dijit_Editor_0" class=" dijitEditor"><div> 
<div lang="" dojoattachpoint="containerNode" tabindex="0" wairole="toolbar" class="dijit dijitToolbar" role="toolbar" id="dijit_Toolbar_0" dir="ltr" widgetid="dijit_Toolbar_0"><span lang="" class="dijit dijitReset dijitInline dijitButton dijitButtonDisabled dijitDisabled" dir="ltr" widgetid="dijit_form_Button_5"><span dojoattachevent="ondijitclick:_onButtonClick" class="dijitReset dijitInline dijitButtonNode"><span waistate="labelledby-dijit_form_Button_5_label" wairole="button" dojoattachpoint="titleNode,focusNode" class="dijitReset dijitStretch dijitButtonContents" role="button" aria-labelledby="dijit_form_Button_5_label" id="dijit_form_Button_5" title="Undo" style="-moz-user-select: none;" aria-disabled="true"><span dojoattachpoint="iconNode" class="dijitReset dijitInline dijitIcon dijitEditorIcon dijitEditorIconUndo"></span><span class="dijitReset dijitToggleButtonIconChar">?</span><span dojoattachpoint="containerNode" id="dijit_form_Button_5_label" class="dijitReset dijitInline dijitButtonText dijitDisplayNone">Undo</span></span></span><input type="button" dojoattachpoint="valueNode" class="dijitOffScreen" value="" disabled=""></span><span lang="" class="dijit dijitReset dijitInline dijitButton dijitButtonDisabled dijitDisabled" dir="ltr" widgetid="dijit_form_Button_6"><span dojoattachevent="ondijitclick:_onButtonClick" class="dijitReset dijitInline dijitButtonNode"><span waistate="labelledby-dijit_form_Button_6_label" wairole="button" dojoattachpoint="titleNode,focusNode" class="dijitReset dijitStretch dijitButtonContents" role="button" aria-labelledby="dijit_form_Button_6_label" id="dijit_form_Button_6" title="Redo" style="-moz-user-select: none;" aria-disabled="true"><span dojoattachpoint="iconNode" class="dijitReset dijitInline dijitIcon dijitEditorIcon dijitEditorIconRedo"></span><span class="dijitReset dijitToggleButtonIconChar">?</span><span dojoattachpoint="containerNode" id="dijit_form_Button_6_label" class="dijitReset dijitInline dijitButtonText dijitDisplayNone">Redo</span></span></span><input type="button" dojoattachpoint="valueNode" class="dijitOffScreen" value="" disabled=""></span><div wairole="presentation" class="dijitToolbarSeparator dijitInline" role="presentation" id="dijit_ToolbarSeparator_0" widgetid="dijit_ToolbarSeparator_0" style="-moz-user-select: none;"></div><span lang="" class="dijit dijitReset dijitInline dijitButton dijitButtonDisabled dijitDisabled" dir="ltr" widgetid="dijit_form_Button_7"><span dojoattachevent="ondijitclick:_onButtonClick" class="dijitReset dijitInline dijitButtonNode"><span waistate="labelledby-dijit_form_Button_7_label" wairole="button" dojoattachpoint="titleNode,focusNode" class="dijitReset dijitStretch dijitButtonContents" role="button" aria-labelledby="dijit_form_Button_7_label" id="dijit_form_Button_7" title="Cut" style="-moz-user-select: none;" aria-disabled="true"><span dojoattachpoint="iconNode" class="dijitReset dijitInline dijitIcon dijitEditorIcon dijitEditorIconCut"></span><span class="dijitReset dijitToggleButtonIconChar">?</span><span dojoattachpoint="containerNode" id="dijit_form_Button_7_label" class="dijitReset dijitInline dijitButtonText dijitDisplayNone">Cut</span></span></span><input type="button" dojoattachpoint="valueNode" class="dijitOffScreen" value="" disabled=""></span><span lang="" class="dijit dijitReset dijitInline dijitButton dijitButtonDisabled dijitDisabled" dir="ltr" widgetid="dijit_form_Button_8"><span dojoattachevent="ondijitclick:_onButtonClick" class="dijitReset dijitInline dijitButtonNode"><span waistate="labelledby-dijit_form_Button_8_label" wairole="button" dojoattachpoint="titleNode,focusNode" class="dijitReset dijitStretch dijitButtonContents" role="button" aria-labelledby="dijit_form_Button_8_label" id="dijit_form_Button_8" title="Copy" style="-moz-user-select: none;" aria-disabled="true"><span dojoattachpoint="iconNode" class="dijitReset dijitInline dijitIcon dijitEditorIcon dijitEditorIconCopy"></span><span class="dijitReset dijitToggleButtonIconChar">?</span><span dojoattachpoint="containerNode" id="dijit_form_Button_8_label" class="dijitReset dijitInline dijitButtonText dijitDisplayNone">Copy</span></span></span><input type="button" dojoattachpoint="valueNode" class="dijitOffScreen" value="" disabled=""></span><span lang="" class="dijit dijitReset dijitInline dijitButton" dir="ltr" widgetid="dijit_form_Button_9"><span dojoattachevent="ondijitclick:_onButtonClick" class="dijitReset dijitInline dijitButtonNode"><span waistate="labelledby-dijit_form_Button_9_label" wairole="button" dojoattachpoint="titleNode,focusNode" class="dijitReset dijitStretch dijitButtonContents" role="button" aria-labelledby="dijit_form_Button_9_label" id="dijit_form_Button_9" tabindex="-1" title="Paste" style="-moz-user-select: none;" aria-disabled="false"><span dojoattachpoint="iconNode" class="dijitReset dijitInline dijitIcon dijitEditorIcon dijitEditorIconPaste"></span><span class="dijitReset dijitToggleButtonIconChar">?</span><span dojoattachpoint="containerNode" id="dijit_form_Button_9_label" class="dijitReset dijitInline dijitButtonText dijitDisplayNone">Paste</span></span></span><input type="button" dojoattachpoint="valueNode" class="dijitOffScreen" value=""></span><div wairole="presentation" class="dijitToolbarSeparator dijitInline" role="presentation" id="dijit_ToolbarSeparator_1" widgetid="dijit_ToolbarSeparator_1" style="-moz-user-select: none;"></div><span lang="" class="dijit dijitReset dijitInline dijitToggleButton" dir="ltr" widgetid="dijit_form_ToggleButton_0"><span dojoattachevent="ondijitclick:_onButtonClick" class="dijitReset dijitInline dijitButtonNode"><span waistate="labelledby-dijit_form_ToggleButton_0_label" wairole="button" dojoattachpoint="titleNode,focusNode" class="dijitReset dijitStretch dijitButtonContents" role="button" aria-labelledby="dijit_form_ToggleButton_0_label" id="dijit_form_ToggleButton_0" tabindex="-1" title="Bold" style="-moz-user-select: none;" aria-disabled="false" aria-pressed="false"><span dojoattachpoint="iconNode" class="dijitReset dijitInline dijitIcon dijitEditorIcon dijitEditorIconBold"></span><span class="dijitReset dijitToggleButtonIconChar">?</span><span dojoattachpoint="containerNode" id="dijit_form_ToggleButton_0_label" class="dijitReset dijitInline dijitButtonText dijitDisplayNone">Bold</span></span></span><input type="button" dojoattachpoint="valueNode" class="dijitOffScreen" value=""></span><span lang="" class="dijit dijitReset dijitInline dijitToggleButton" dir="ltr" widgetid="dijit_form_ToggleButton_1"><span dojoattachevent="ondijitclick:_onButtonClick" class="dijitReset dijitInline dijitButtonNode"><span waistate="labelledby-dijit_form_ToggleButton_1_label" wairole="button" dojoattachpoint="titleNode,focusNode" class="dijitReset dijitStretch dijitButtonContents" role="button" aria-labelledby="dijit_form_ToggleButton_1_label" id="dijit_form_ToggleButton_1" tabindex="-1" title="Italic" style="-moz-user-select: none;" aria-disabled="false" aria-pressed="false"><span dojoattachpoint="iconNode" class="dijitReset dijitInline dijitIcon dijitEditorIcon dijitEditorIconItalic"></span><span class="dijitReset dijitToggleButtonIconChar">?</span><span dojoattachpoint="containerNode" id="dijit_form_ToggleButton_1_label" class="dijitReset dijitInline dijitButtonText dijitDisplayNone">Italic</span></span></span><input type="button" dojoattachpoint="valueNode" class="dijitOffScreen" value=""></span><span lang="" class="dijit dijitReset dijitInline dijitToggleButton" dir="ltr" widgetid="dijit_form_ToggleButton_2"><span dojoattachevent="ondijitclick:_onButtonClick" class="dijitReset dijitInline dijitButtonNode"><span waistate="labelledby-dijit_form_ToggleButton_2_label" wairole="button" dojoattachpoint="titleNode,focusNode" class="dijitReset dijitStretch dijitButtonContents" role="button" aria-labelledby="dijit_form_ToggleButton_2_label" id="dijit_form_ToggleButton_2" tabindex="-1" title="Underline" style="-moz-user-select: none;" aria-disabled="false" aria-pressed="false"><span dojoattachpoint="iconNode" class="dijitReset dijitInline dijitIcon dijitEditorIcon dijitEditorIconUnderline"></span><span class="dijitReset dijitToggleButtonIconChar">?</span><span dojoattachpoint="containerNode" id="dijit_form_ToggleButton_2_label" class="dijitReset dijitInline dijitButtonText dijitDisplayNone">Underline</span></span></span><input type="button" dojoattachpoint="valueNode" class="dijitOffScreen" value=""></span><span lang="" class="dijit dijitReset dijitInline dijitToggleButton" dir="ltr" widgetid="dijit_form_ToggleButton_3"><span dojoattachevent="ondijitclick:_onButtonClick" class="dijitReset dijitInline dijitButtonNode"><span waistate="labelledby-dijit_form_ToggleButton_3_label" wairole="button" dojoattachpoint="titleNode,focusNode" class="dijitReset dijitStretch dijitButtonContents" role="button" aria-labelledby="dijit_form_ToggleButton_3_label" id="dijit_form_ToggleButton_3" tabindex="-1" title="Strikethrough" style="-moz-user-select: none;" aria-disabled="false" aria-pressed="false"><span dojoattachpoint="iconNode" class="dijitReset dijitInline dijitIcon dijitEditorIcon dijitEditorIconStrikethrough"></span><span class="dijitReset dijitToggleButtonIconChar">?</span><span dojoattachpoint="containerNode" id="dijit_form_ToggleButton_3_label" class="dijitReset dijitInline dijitButtonText dijitDisplayNone">Strikethrough</span></span></span><input type="button" dojoattachpoint="valueNode" class="dijitOffScreen" value=""></span><div wairole="presentation" class="dijitToolbarSeparator dijitInline" role="presentation" id="dijit_ToolbarSeparator_2" widgetid="dijit_ToolbarSeparator_2" style="-moz-user-select: none;"></div><span lang="" class="dijit dijitReset dijitInline dijitButton" dir="ltr" widgetid="dijit_form_Button_10"><span dojoattachevent="ondijitclick:_onButtonClick" class="dijitReset dijitInline dijitButtonNode"><span waistate="labelledby-dijit_form_Button_10_label" wairole="button" dojoattachpoint="titleNode,focusNode" class="dijitReset dijitStretch dijitButtonContents" role="button" aria-labelledby="dijit_form_Button_10_label" id="dijit_form_Button_10" tabindex="-1" title="Numbered List" style="-moz-user-select: none;" aria-disabled="false"><span dojoattachpoint="iconNode" class="dijitReset dijitInline dijitIcon dijitEditorIcon dijitEditorIconInsertOrderedList"></span><span class="dijitReset dijitToggleButtonIconChar">?</span><span dojoattachpoint="containerNode" id="dijit_form_Button_10_label" class="dijitReset dijitInline dijitButtonText dijitDisplayNone">Numbered List</span></span></span><input type="button" dojoattachpoint="valueNode" class="dijitOffScreen" value=""></span><span lang="" class="dijit dijitReset dijitInline dijitButton" dir="ltr" widgetid="dijit_form_Button_11"><span dojoattachevent="ondijitclick:_onButtonClick" class="dijitReset dijitInline dijitButtonNode"><span waistate="labelledby-dijit_form_Button_11_label" wairole="button" dojoattachpoint="titleNode,focusNode" class="dijitReset dijitStretch dijitButtonContents" role="button" aria-labelledby="dijit_form_Button_11_label" id="dijit_form_Button_11" tabindex="-1" title="Bullet List" style="-moz-user-select: none;" aria-disabled="false"><span dojoattachpoint="iconNode" class="dijitReset dijitInline dijitIcon dijitEditorIcon dijitEditorIconInsertUnorderedList"></span><span class="dijitReset dijitToggleButtonIconChar">?</span><span dojoattachpoint="containerNode" id="dijit_form_Button_11_label" class="dijitReset dijitInline dijitButtonText dijitDisplayNone">Bullet List</span></span></span><input type="button" dojoattachpoint="valueNode" class="dijitOffScreen" value=""></span><span lang="" class="dijit dijitReset dijitInline dijitButton" dir="ltr" widgetid="dijit_form_Button_12"><span dojoattachevent="ondijitclick:_onButtonClick" class="dijitReset dijitInline dijitButtonNode"><span waistate="labelledby-dijit_form_Button_12_label" wairole="button" dojoattachpoint="titleNode,focusNode" class="dijitReset dijitStretch dijitButtonContents" role="button" aria-labelledby="dijit_form_Button_12_label" id="dijit_form_Button_12" tabindex="-1" title="Indent" style="-moz-user-select: none;" aria-disabled="false"><span dojoattachpoint="iconNode" class="dijitReset dijitInline dijitIcon dijitEditorIcon dijitEditorIconIndent"></span><span class="dijitReset dijitToggleButtonIconChar">?</span><span dojoattachpoint="containerNode" id="dijit_form_Button_12_label" class="dijitReset dijitInline dijitButtonText dijitDisplayNone">Indent</span></span></span><input type="button" dojoattachpoint="valueNode" class="dijitOffScreen" value=""></span><span lang="" class="dijit dijitReset dijitInline dijitButton dijitButtonDisabled dijitDisabled" dir="ltr" widgetid="dijit_form_Button_13"><span dojoattachevent="ondijitclick:_onButtonClick" class="dijitReset dijitInline dijitButtonNode"><span waistate="labelledby-dijit_form_Button_13_label" wairole="button" dojoattachpoint="titleNode,focusNode" class="dijitReset dijitStretch dijitButtonContents" role="button" aria-labelledby="dijit_form_Button_13_label" id="dijit_form_Button_13" title="Outdent" style="-moz-user-select: none;" aria-disabled="true"><span dojoattachpoint="iconNode" class="dijitReset dijitInline dijitIcon dijitEditorIcon dijitEditorIconOutdent"></span><span class="dijitReset dijitToggleButtonIconChar">?</span><span dojoattachpoint="containerNode" id="dijit_form_Button_13_label" class="dijitReset dijitInline dijitButtonText dijitDisplayNone">Outdent</span></span></span><input type="button" dojoattachpoint="valueNode" class="dijitOffScreen" value="" disabled=""></span><div wairole="presentation" class="dijitToolbarSeparator dijitInline" role="presentation" id="dijit_ToolbarSeparator_3" widgetid="dijit_ToolbarSeparator_3" style="-moz-user-select: none;"></div><span lang="" class="dijit dijitReset dijitInline dijitButton" dir="ltr" widgetid="dijit_form_Button_14"><span dojoattachevent="ondijitclick:_onButtonClick" class="dijitReset dijitInline dijitButtonNode"><span waistate="labelledby-dijit_form_Button_14_label" wairole="button" dojoattachpoint="titleNode,focusNode" class="dijitReset dijitStretch dijitButtonContents" role="button" aria-labelledby="dijit_form_Button_14_label" id="dijit_form_Button_14" tabindex="-1" title="Align Left" style="-moz-user-select: none;" aria-disabled="false"><span dojoattachpoint="iconNode" class="dijitReset dijitInline dijitIcon dijitEditorIcon dijitEditorIconJustifyLeft"></span><span class="dijitReset dijitToggleButtonIconChar">?</span><span dojoattachpoint="containerNode" id="dijit_form_Button_14_label" class="dijitReset dijitInline dijitButtonText dijitDisplayNone">Align Left</span></span></span><input type="button" dojoattachpoint="valueNode" class="dijitOffScreen" value=""></span><span lang="" class="dijit dijitReset dijitInline dijitButton" dir="ltr" widgetid="dijit_form_Button_15"><span dojoattachevent="ondijitclick:_onButtonClick" class="dijitReset dijitInline dijitButtonNode"><span waistate="labelledby-dijit_form_Button_15_label" wairole="button" dojoattachpoint="titleNode,focusNode" class="dijitReset dijitStretch dijitButtonContents" role="button" aria-labelledby="dijit_form_Button_15_label" id="dijit_form_Button_15" tabindex="-1" title="Align Right" style="-moz-user-select: none;" aria-disabled="false"><span dojoattachpoint="iconNode" class="dijitReset dijitInline dijitIcon dijitEditorIcon dijitEditorIconJustifyRight"></span><span class="dijitReset dijitToggleButtonIconChar">?</span><span dojoattachpoint="containerNode" id="dijit_form_Button_15_label" class="dijitReset dijitInline dijitButtonText dijitDisplayNone">Align Right</span></span></span><input type="button" dojoattachpoint="valueNode" class="dijitOffScreen" value=""></span><span lang="" class="dijit dijitReset dijitInline dijitButton" dir="ltr" widgetid="dijit_form_Button_16"><span dojoattachevent="ondijitclick:_onButtonClick" class="dijitReset dijitInline dijitButtonNode"><span waistate="labelledby-dijit_form_Button_16_label" wairole="button" dojoattachpoint="titleNode,focusNode" class="dijitReset dijitStretch dijitButtonContents" role="button" aria-labelledby="dijit_form_Button_16_label" id="dijit_form_Button_16" tabindex="-1" title="Align Center" style="-moz-user-select: none;" aria-disabled="false"><span dojoattachpoint="iconNode" class="dijitReset dijitInline dijitIcon dijitEditorIcon dijitEditorIconJustifyCenter"></span><span class="dijitReset dijitToggleButtonIconChar">?</span><span dojoattachpoint="containerNode" id="dijit_form_Button_16_label" class="dijitReset dijitInline dijitButtonText dijitDisplayNone">Align Center</span></span></span><input type="button" dojoattachpoint="valueNode" class="dijitOffScreen" value=""></span><span lang="" class="dijit dijitReset dijitInline dijitButton" dir="ltr" widgetid="dijit_form_Button_17"><span dojoattachevent="ondijitclick:_onButtonClick" class="dijitReset dijitInline dijitButtonNode"><span waistate="labelledby-dijit_form_Button_17_label" wairole="button" dojoattachpoint="titleNode,focusNode" class="dijitReset dijitStretch dijitButtonContents" role="button" aria-labelledby="dijit_form_Button_17_label" id="dijit_form_Button_17" tabindex="-1" title="Justify" style="-moz-user-select: none;" aria-disabled="false"><span dojoattachpoint="iconNode" class="dijitReset dijitInline dijitIcon dijitEditorIcon dijitEditorIconJustifyFull"></span><span class="dijitReset dijitToggleButtonIconChar">?</span><span dojoattachpoint="containerNode" id="dijit_form_Button_17_label" class="dijitReset dijitInline dijitButtonText dijitDisplayNone">Justify</span></span></span><input type="button" dojoattachpoint="valueNode" class="dijitOffScreen" value=""></span></div></div><div class="dijitEditorIFrameContainer"><iframe frameborder="0" id="dijit_Editor_0_iframe" style="border: medium none; width: 100%; height: 300px;" src="javascript:parent.dijit.byId(&quot;dijit_Editor_0&quot;)._iframeSrc" class="dijitEditorIFrame"></iframe></div><div></div></div><textarea propercase="true" dojotype="dijit.Editor" name="mailContent" id="dijit_Editor_0" dir="ltr" class="dijitEditor" style="display: block; position: absolute; top: -1000px;"></textarea> 

<span class="dijit dijitReset dijitInline dijitButton" dir="ltr" widgetid="save"><span dojoattachevent="ondijitclick:_onButtonClick" class="dijitReset dijitInline dijitButtonNode"><span waistate="labelledby-save_label" wairole="button" dojoattachpoint="titleNode,focusNode" class="dijitReset dijitStretch dijitButtonContents" role="button" aria-labelledby="save_label" id="save" tabindex="0" style="-moz-user-select: none;"><span dojoattachpoint="iconNode" class="dijitReset dijitInline dijitIcon"></span><span class="dijitReset dijitToggleButtonIconChar">?</span><span dojoattachpoint="containerNode" id="save_label" class="dijitReset dijitInline dijitButtonText">Save</span></span></span><input type="submit" dojoattachpoint="valueNode" class="dijitOffScreen" value="" name="save"></span> 

+1

只要按鈕有一個ID,據我所知。你爲什麼不改變ID?或者你最終想達到什麼目標? – 2010-11-13 21:00:25

回答

1

在jQuery中,可以動態改變元素的id在選擇很容易:

var newForm = $('form') 
         .clone() 
         .find('[id]') // find elements with an id set 
          .attr('id', function(idx, oldId) { // dynamically set each of these elements 
           return 'new_' + oldId; // to new_ + the old id value 
          }) 
         .end(); // return to the form selection 

我不是道場不夠熟悉,知道類似的東西是否可以實現,但我希望它可以。

+0

@Downvoter - 評論? – lonesomeday 2010-11-14 16:50:15

0

這裏有一個例子我的意思:

var i = 0; //somewhere globally 

var formClone = document.frmMail.cloneNode(true); 
formClone.save.id = "save" + i; 
i++; 
document.body.appendChild(formClone); // adding somewhere 

DEMO(注意,我只使用jQuery附加單擊處理...更容易; ))

參考:cloneNode()它實際上說:

請注意,cloneNode可能會導致文檔中重複的element-id!

這只是它的方式。這是你的責任,然後改變ID。

0

你可以用jQuery來做,但是你必須改變id,就像你的原始DOM impl一樣。

var form = $('form'); 
var clonedForm = form.clone(); 
clonedForm.find('button').attr('id', 'save2'); 
form.after(clonedForm); 

你可以看到它在行動http://jsfiddle.net/ydBpR/

1

我不想編輯我的答案,因爲它已被接受,並且由於我不熟悉Dojo,因此我不足100%確定這是正確的。然而,這段代碼似乎是一些接近我的其他答案的端口道場:

var oldform = dojo.query('form'), 
    newform = dojo.clone(oldform); 

newform.query('[id]').forEach(function(el){ 
    el.id = 'new_' + el.id; 
}); 
+0

你的答案的想法可能是正確的,但它不完全是我想要的。使用dojo並添加小部件,克隆功能與innerHtml完全相同,我手動重命名該id。它會一直這樣,但最重要的是,我也必須處理由dojo生成的所有widgetid – 2010-11-13 23:32:26

+0

@stunaz如果你沒有明確說明你的需求,那麼很難將你的需求解決。我無法在這些元素上看到dojo ID - 您可以在瀏覽器解釋它時發佈文檔嗎? (即從Firebug/Chrome控制檯等複製/粘貼) – lonesomeday 2010-11-13 23:35:58

+0

我粘貼了生成的代碼,但正如我所看到的,它變得太複雜了,因爲我不完全知道dojo如何使用該代碼,或者dojos如何生成其他代碼。這就是爲什麼我正在尋找另一種解決方案,即克隆乾淨的HTML代碼沒有dojo,然後添加dojo小部件克隆的代碼。必須工作,但我不知道如果我可以將dojowidget應用於現有代碼,我仍然使用它搜索 – 2010-11-14 00:42:34

1

這裏是道場

   dojo.query('[id]', newform).forEach(function(e){ 
       e.id = 'new_' + e.id; 
      }); 
1

不要只克隆所有節點正確的答案。 Dijit小部件是與DOM相關聯的JS對象,因此在事後無法正常工作的情況下重命名和複製DOM節點。

相反,在Dojo分析並實例化小部件之前,克隆代碼(dojo.clone在DOM節點上)。我想最終你會發現這很簡單。爲此,您必須在文檔和/或片段上手動調用dojo.parser.parse()。如果您在字符串中包含此片段,則可以使用innerHTML將其插入到文檔中兩次,然後調用parse ()

你還是會有一個id =「save」來處理。您可以手動爲該按鈕分配一個id值,無論是使用字符串操作還是使用dojo.query。不要忘記,你可能想要爲表單名稱做同樣的事情,以使其具有獨特性。

+0

耶,謝謝,我有第一個複製節點,比我動態dojo功能 – 2010-11-15 17:39:18

0

如果我們想要將dom節點轉換爲小部件,我們必須使用解析器。

var oldform = dojo.query('form'), 
var newform = dojo.clone(oldform); 

newform.query('[id]').forEach(function(el){ 
    el.id = 'new_' + el.id; 
}); 


dojo.body().appendChild(newform); 
//force body to be parsed for widgets 
dojo.parser.parse(dojo.body()); 
相關問題