iT邦幫忙

0

javascript 讀取xml程式改良

請問各位大大,如何改良附圖的程式,讓它可以再讀入另一個xml,並放在select中,
格式如下:
<?xml version="1.0" encoding="utf-8"?>
<item>
<address>100 台北市重慶南路二段7號1樓</address>
<tele>23888888</tele>
<fax>23888899</fax>
</item>
<item>
<address>100 台北市重慶南路一段4號</address>
<tele>23121212</tele>
<fax>23323232</fax>
</item>
麻煩大家解惑了

看更多先前的討論...收起先前的討論...

weiclin iT邦高手 4 級 ‧ 2014-05-13 12:58:38 檢舉
你這圖根本沒辦法看清半個字喔...
可以直接貼程式碼啊
fillano iT邦超人 1 級 ‧ 2014-05-13 14:12:46 檢舉
candice242提到:
如何改良附圖的程式


所謂「附圖的程式」是什麼?
不好意思,大大,附圖已貼上了

2 個回答

4
fillano
iT邦超人 1 級 ‧ 2014-05-14 11:09:16
最佳解答

其實你的需求還是沒有說很清楚。不過簡單的說,你可以把option存入陣列,而不是字串。這樣透過陣列就可以調整選單(找一下push/splice/concat/pop/shift/unshift等等操作陣列的方法怎麼用,不過你應該不會用到pop/shift),最後再把陣列用join()方法組合成字串str丟給$(elem).html(str)。

看更多先前的回應...收起先前的回應...

簡單來說,我有10個html表單,表單中的select很常更換,目前我的程式可以做到只有一個select,若有第二個select加入,則會報錯.
所以想請教各位大大,若是xml為如下:
<?xml version="1.0" encoding="utf-8"?>
<item>
<address>100 台北市重慶南路二段7號1樓</address>
<tele>23888888</tele>
<fax>23888899</fax>
</item>
<item>
<address>100 台北市重慶南路一段4號</address>
<tele>23121212</tele>
<fax>23323232</fax>
</item>
程式讀取xml的寫法是要改變那裡呢?

fillano iT邦超人 1 級 ‧ 2014-05-14 15:50:07 檢舉
  1. 你的頁面到底會有多少select?會連動嗎?
  2. select很常更換,是要更換麼?是每個頁面不同,然後根據讀取的xml改變選單?還是其他?
  3. 你舉例的xml,是實際使用的嗎?因為結構跟你的範例程式不太一樣
  4. 報錯,是報什麼錯?

請您把需求再描述更精確一點。

1.以目前的程式來說,select只有一個(selectbox).但另外有一張表單,有三個select分別為address,tele,fax.若選address則會自動帶入相對應的tele及fax
2.select會隔一段時間要加入新的一項.ex:部門,加入會計部.
而這個部門select,幾乎10張表單都會用到,所以當然設成xml我比較好維護.
3.我舉例的xml如下,是我預計要做的.但以範例程式,會跑不出來,都是空白.
<item>
<address>100 台北市重慶南路一段4號</address>
<tele>23121212</tele>
<fax>23323232</fax>
</item>
4.sorry,應該不是報錯.是完全沒有資料.

fillano iT邦超人 1 級 ‧ 2014-05-14 21:58:25 檢舉

資料:

&lt;pre class="c" name="code">&lt;?xml version="1.0" encoding="utf-8"?>
&lt;items>
&lt;item>
&lt;address>100 台北市重慶南路二段7號1樓&lt;/address>
&lt;tele>23888888&lt;/tele>
&lt;fax>23888899&lt;/fax>
&lt;/item>
&lt;item>
&lt;address>100 台北市重慶南路一段4號&lt;/address>
&lt;tele>23121212&lt;/tele>
&lt;fax>23323232&lt;/fax>
&lt;/item>
&lt;/items>

程式(我稍微簡化了):

&lt;pre class="c" name="code">
&lt;script src="js/jquery-1.9.1.js">&lt;/script>

	&lt;select id="main">&lt;/select>


&lt;script>
$.ajax({
	url: 'test928.xml',
	type: 'get',
	dataType: 'xml',
	success: function(xml) {
		var menuitem = ['&lt;option>請選擇&lt;/option>'];
		$(xml).find('items').find('item').each(function(index, node) {
			menuitem.push('&lt;option value="'+$(this).text()+'">'+$(this).text()+'&lt;/option>')
		});
		$('#main').html(menuitem.join(''));
	}
});
&lt;/script>

這樣是沒問題的啊,還是說你在做address, tele, fax的部份有問題?

是呀,這樣是沒問題的.謝謝大大幫我簡化程式.
但我現在的需求是address選進來後,tele及fax如何連動帶入select呢?

fillano iT邦超人 1 級 ‧ 2014-05-15 09:27:50 檢舉

這樣喔...終於知道你的問題點XD

如過有這樣的需求,你在剖析xml時,不要只是讓他轉成字串。你可以考慮一下需要怎樣的互動,然後需要把這些資料存到怎樣的資料結構中,來跟你需要的互動做對應。

例如你可以把資料存成陣列,然後用陣列索引當作地址選單的value,這樣在onchange事件中,讀取選單目前的value,就可以利用索引從陣列中取出tele跟fax。

2
player
iT邦大師 1 級 ‧ 2014-05-13 15:09:04

1.你根本沒貼任何的程式, 如果要猜出你的程式是怎麼寫的? 難度也太高了
2.在JavaScript去處理XML通常是瀏覽器內建的 XMLHttpRequest
或是MS的Microsoft.XMLDOM的ActiveX來處理
用法請自行用Google找

不好意思,程式如下圖謝謝

我要發表回答

立即登入回答