2014-02-20 80 views
0

我在創建表單時遇到了問題:在我的spring mvc應用程序中選擇javascript內部。我無法在javascripte中創建動態選擇彈簧mvc應用程序

功能createSubSelect(divName,路徑名默認值,defaultLable,項目){

var newDiv=document.createElement('div'); 
var selectHTML = ""; 
selectHTML="<form:select path="; 
selectHTML += "'"+pathName+"'"; 
selectHTML += "class="; 
selectHTML += "'aa'>"; 
selectHTML += "<form:option value="; 
selectHTML += " '"+defaultValue+"' "; 
selectHTML += "label="; 
selectHTML += "'"+defaultLable+"'"; 
selectHTML += ">"; 
selectHTML += "<form:options items="; 
selectHTML += "'"+items+"'"; 
selectHTML += "</form:options>"; 
selectHTML += "</form:select>"; 
selectHTML += "<form:errors path="; 
selectHTML += "'"+pathName+"'"; 
selectHTML += "/>"; 
alert(selectHTML); 
document.getElementById(divName).appendChild(newDiv); 

}

請幫我在哪裏,我是錯了。

+1

你不會在任何地方附加你的'selectHTML'。 – tymeJV

+0

請用example.or解釋一下,或者讓我知道上面的代碼有什麼變化 – user3333813

+0

你必須「追加」你正在構建的HTML。現在你不用'selectHTML' – tymeJV

回答

0

首先,看起來您正在使用JavaScript構建JSP字符串。這是行不通的,因爲JSP是在將HTML發送到瀏覽器的服務器上進行評估的。 JavaScript需要處理HTML和文檔對象模型API。

基本的方式做到這一點是:

var newDiv=document.createElement('div'); 
var selectHTML = [ 
    '<select name="' + pathName + '" class="aa">', 
     '<option value="' + defaultValue + '">' + defaultLable + '</option>', 
     '<option value="X">Label 1</option>', 
     '<option value="Y">Label 2</option>', 
    '</select>' 
].join(""); 

// Inject new HTML into new DIV 
newDiv.innerHTML = selectHTML; 
// Insert new DIV into page 
document.getElementById(divName).appendChild(newDiv); 

現在,您已經有了一個JavaScript變量稱爲items,我不知道它包含什麼。我假設它是某種陣列。您需要爲items陣列中的每個值創建一個<option value="foo">Bar</option>,該值應出現在下拉列表中,其中foo是選擇該選項時發送回服務器的值,而Bar是用戶可見的標籤。