2013-04-07 45 views
0

我想獲取xml元素的id,但我不知道如何獲取它.. 我通過隨機調用元素所以我不知道我能得到當前元素信息從javascript中的一個元素中獲取屬性,在javascript中隨機調用

要理解我在做什麼來看看我的代碼:

從來就得到了一個XML文件2個信息(YouTube鏈接和一個相關的ID)像這樣:

<videos> 
    <video id="0">o6f9wJ1DWhY</video> 
    <video id="2">sp_WV91jx8E</video> 
    <video id="3">plWnm7UpsXk</video> 
    <video id="4">a1Y73sPHKxw</video> 
    <video id="5">9avT0e5KPPU</video> 
    <video id="6">VTO5yiN1b-I</video> 
    <video id="7">HnENgvGFc4</video> 
    <video id="8">d8u4CEBVq7s</video> 
    <video id="9">abRplCazEjk</video> 
</videos> 

在接下來的一步我保存一個外部XML文件中的變量

var jqxhr = $.ajax({ 
type: 'POST',  
url: "freeakshow.xml", 
dataType: 'xml', 
global: false, 
async:false, 
success: function(data) { 
    return data; 
} 
}).responseText; 

xml_string = jqxhr; 

的信息。然後我用的DOMParser保存在一個數組中的鏈接,這樣我就可以訪問它們後來

function get_ids_from_xml_string(xml_string) { 
// Parse the XML string into a XMLDocument 
var doc = window.DOMParser 
      ? new DOMParser().parseFromString(xml_string, 'text/xml') // Standard 
      : new ActiveXObject('Microsoft.XMLDOM').loadXML(xml_string); // IE 

// Find the answer nodes 
var id_nodes = doc.getElementsByTagName('video'); 
var videos = []; 

// Loop through them and save their text content into an array 
for (var i = 0; i < id_nodes.length; i++) { 
    videos.push(id_nodes[i].firstChild.data) 
} 

return videos; 
} 

var videos = get_ids_from_xml_string(xml_string); 

之後,我得到一個從數組隨機鏈接,這樣我就可以用它來與Youtube的API來播放它,但是這件事情doesn't現在

function getId() { 
    return videos[Math.floor(Math.random() * videos.length)]; 

這裏是問題:我如何才能讓當前隨機鏈接的id我得到了來自的getId()

我想在一個div來顯示它,這樣我可以看到哪個ID是當前和ID是最後一個

(要理解這是關於什麼的,我想顯示當前以及隨機播放視頻的最後一個ID) }

回答

0

「顯示」調試數據的常見解決方案是使用Chrome中的Developer Tools(或類似的控制檯或Firefox或IE)中的控制檯。你可以這樣寫一條線

Console.log(getId()); 

然後它會打印出來在控制檯中供您查看。 Chrome中的Web Developer工具是Tools> Developer Tools。這是一篇很好的文章,廣泛涉及Chrome https://developers.google.com/chrome-developer-tools/docs/console中的控制檯。

如果你有心在div上顯示信息,可以使用像這樣的div集。

<div id="getIdOutput"></div> 

然後JavaScript的這樣

document.getElementById("getIdOutput").innerHTNL = getId() 

要顯示的getId的輸出()!

+0

這是很好的知道,但我想提出的ID在一個div這樣我就可以在顯示它們網站,它不用於調試:)我需要當前的ID和最後一個ID來顯示它們。而且我不會得到鏈接的id,因爲getId只返回鏈接而不是相關的id。這裏錯誤的命名sry – 2013-04-07 18:40:51

+0

我不想顯示getId()的輸出,我想輸出getId給我的鏈接的ID ..看看我頂部的XML文件。首先我需要讀出鏈接的ID。 gedId應該命名爲getVideoLink – 2013-04-07 19:00:54

0

您可以更新您的getId函數來存儲它隨機生成的ID。 例子:

var currentId, lastId; 

function getId() { 
    //save the prev id in the lastId variable 
    lastId = currentId; 
    //get a new id and store it 
    currentId = Math.floor(Math.random() * videos.length); 
    //return the corresponding video 
    return videos[currentId]; 
} 

現在你可以使用currentId和lastId,以滿足您的需求

+0

這將工作完美的情況下,getId會給我我想要的id,再次是壞的命名對不起.. getId只返回鏈接,而不是我想要的id ..我想連接id鏈接,你可以看到它在我的XML文件,如 ..我沒有鏈接的相關ID,我不知道如何訪問它 – 2013-04-07 18:59:07