我正在尝试从xml文件中的多个条目中进行选择,并在网页上显示它们。我似乎无法弄清楚我做错了什么......有没有人有建议?
感谢您的时间: - )
<script type="text/javascript">
var numLow = 1;
var numHigh = 3;
var adjustedHigh = (parseFloat(numLow))+1;
var numRand = Math.floor(Math.random()*adjustedHigh)+parseFloat(numLow);
$.ajax({
type: 'GET',
url: '../xml/testad.xml',
dataType: 'xml',
success: function(xml_list) {
var xmlArr = [];
$(xml_list).find('entry').each(function(i) {
var xml_id = $(this).attr('id');
if(xml_id == numRand) return; //keep going if this wasn't the right ID
var xml_name = $(this).find('name').text();
var xml_link = $(this).find('link').text();
var xml_url = $(this).find('url').text();
// Add matched items to an array
xmlArr += '<div class="ad"><a href="';
xmlArr += xml_url;
xmlArr += '" alt="'
xmlArr += xml_name;
xmlArr += '"><img src="';
xmlArr += xml_link;
xmlArr += '" /></a></div>';
}); // end each loop
//Append array to adviewer div (this way is much faster than doing this individually for each item)
$(xmlArr).appendTo('#adviewer');
$('#adviewer').show();
}
});
</script>
上面看起来“应该”有效,但实际上并没有选择随机录入...
<script type="text/javascript">
var numLow = 1;
var numHigh = 3;
var adjustedHigh = (parseFloat(numLow))+1;
var numRand = Math.floor(Math.random()*adjustedHigh)+parseFloat(numLow);
$.ajax({
type: 'GET',
url: '../xml/testad.xml',
dataType: 'xml',
success: function(xml_list) {
var xmlArr = [];
$(xml_list).find('entry').each(function() {
var xml_id = $(this).attr('id');
var xml_name = $(this).find('name').text();
var xml_link = $(this).find('link').text();
var xml_url = $(this).find('url').text();
// Add matched items to an array
xmlArr += '<div id=: '
xmlArr += xml_id;
xmlArr += '"class="ad"><ahref="';
xmlArr += xml_url;
xmlArr += '" title="'
xmlArr += xml_name;
xmlArr += '"><img class="ad" src="';
xmlArr += xml_link;
xmlArr += '"></a></div>';
if(id == numRand).appendTo(div +' class="adviewer"');
}
}); // end each loop
</script>
答案 0 :(得分:0)
我认为你所追求的是这样的:
$(xml_list).find('entry').each(function(i) {
var xml_id = $(this).attr('id');
if(i != numRand) return; //keep going if this wasn't the right ID
var xml_name = $(this).find('name').text(),
xml_link = $(this).find('link').text(),
xml_url = $(this).find('url').text();
var div = $('<div />' { 'id': xml_id, 'class': 'ad' });
div.append($('<a />', { 'href': xml_url, 'title': xml_name }));
div.append($('<img />', {'class': 'ad', 'src': xml_link }));
div.appendTo('div.adviewer');
}); // end each loop
目前存在一些语法错误,主要是这样:
if(id == numRand).appendTo(div +' class="adviewer"');
在jQuery对象上调用 .appendTo()
以附加到某个内容,<div class="adviewer">
的选择器看起来像div.adviewer
,就像我上面一样。
其余的更改集中在切换到$(html, props)
DOM元素创建方法到属性句柄编码等(例如,如果你有任何引用)。同样id
在你的问题/代码中未定义...我假设你在这里指的是索引,如果你没有,那么将if(i != numRand)
更改为{{1相反,它将与XML中的ID进行比较。