2013-04-07 46 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