Javascript 传递要追加的变量
在主页上,JS将从新闻页面抓取最多三个新闻故事,并显示链接到完整故事的缩写版本。我遇到的问题是,我试图连接的一个变量没有按预期进行连接 主页:Javascript 传递要追加的变量,javascript,jquery,variables,Javascript,Jquery,Variables,在主页上,JS将从新闻页面抓取最多三个新闻故事,并显示链接到完整故事的缩写版本。我遇到的问题是,我试图连接的一个变量没有按预期进行连接 主页: <div id="news-autoloader"> </div> 新闻页: <h3 id="news1">News Item 1</h3> <p>Lorem ipsum dolor sit amet...</p> <h3 id="news2">News It
<div id="news-autoloader">
</div>
新闻页:
<h3 id="news1">News Item 1</h3>
<p>Lorem ipsum dolor sit amet...</p>
<h3 id="news2">News Item 2</h3>
<p>Lorem ipsum dolor sit amet...</p>
// more or less of the same news items
新闻项目1
我爱你,我爱你
新闻项目2
我爱你,我爱你
//大致相同的新闻项目
新闻页面可能没有项目,但我们将最多捕获三个项目,首先是标题,然后是h3标题后第一个p的n个字符(宁愿捕获n个单词,但这是在问题解决之后!)
<script>
$.get('company-news.html',
function(data){
var news1 = $(data).find('#news1 + p');
var news2 = $(data).find('#news2 + p');
var news3 = $(data).find('#news3 + p');
// see how many news items there are (there's probably a more graceful way of doing this!):
if (news1.html() == null){
var items = 0;
} else if (news2.html() == null){
var items = 1;
} else if (news3.html() == null){
var items = 2;
} else {
var items = 3;
}
if (items == 0){
$('#news-autoloader').append('<h3>No News.</h3>');
} else {
for (i=1; i<=items; i++){
var abc = '#news' + i;
var def = 'news' + i;
var url = 'a href="company-news.html#news' +i;
$('#news-autoloader').append($(abc,data)).append('<p>' + def.html().substr(0, 175) + ' <' + url + '">More</a></p>');
}
}
}, 'html');
</script>
$.get('company-news.html',
功能(数据){
var news1=$(数据).find(“#news1+p”);
var news2=$(数据).find(“#news2+p”);
var news3=$(数据).find(“#news3+p”);
//看看有多少条新闻(可能有一种更优雅的方式可以做到这一点!):
if(news1.html()==null){
var项目=0;
}else if(news2.html()==null){
var项目=1;
}else if(news3.html()==null){
var项目=2;
}否则{
var项目=3;
}
如果(项目==0){
$(“#新闻自动加载器”).append('无新闻');
}否则{
对于(i=1;i您的问题是调用了..def.html()..
并且def
既不是jQuery对象也不是元素。相反,def
的值是'news'+i
,其中i
是迭代次数
如果您打算从news
的id
元素中获取HTML,则需要将def
的值更改为'#news'+i
,然后将def
包装到jQuery对象中,$(def)
,函数:
..$(def).html()..
更新
如果我再次误解了您,您要做的是呈现变量news1
、news2
和news3
,那么您应该将这些变量放入数组中
如果不使用数组,则无法从JavaScript中的字符串引用变量
如果是这种情况,您的更新代码如下:
<script>
$.get('company-news.html',
function(data){
var newsData = [];
newsData["news1"] = $(data).find('#news1 + p');
newsData["news2"] = $(data).find('#news2 + p');
newsData["news3"] = $(data).find('#news3 + p');
// see how many news items there are (there's probably a more graceful way of doing this!):
if (newsData["news1"].html() == null){
var items = 0;
} else if (newsData["news2"].html() == null){
var items = 1;
} else if (newsData["news3"].html() == null){
var items = 2;
} else {
var items = 3;
}
if (items == 0){
$('#news-autoloader').append('<h3>No News.</h3>');
} else {
for (i=1; i<=items; i++){
var abc = '#news' + i;
var def = 'news' + i;
var url = 'a href="company-news.html#news' +i;
$('#news-autoloader').append($(abc,data)).append('<p>' + $(newsData[def]).html().substr(0, 175) + ' <' + url + '">More</a></p>');
}
}
}, 'html');
</script>
$.get('company-news.html',
功能(数据){
var newsData=[];
newsData[“news1”]=$(数据)。查找(“#news1+p”);
newsData[“news2”]=$(数据)。查找(“#news2+p”);
newsData[“news3”]=$(数据)。查找(“#news3+p”);
//看看有多少条新闻(可能有一种更优雅的方式可以做到这一点!):
if(newsData[“news1”].html()==null){
var项目=0;
}else if(newsData[“news2”].html()==null){
var项目=1;
}else if(newsData[“news3”].html()==null){
var项目=2;
}否则{
var项目=3;
}
如果(项目==0){
$(“#新闻自动加载器”).append('无新闻');
}否则{
对于(i=1;i您的问题是调用了..def.html()..
并且def
既不是jQuery对象也不是元素。相反,def
的值是'news'+i
,其中i
是迭代次数
如果您打算从news
的id
元素中获取HTML,则需要将def
的值更改为'#news'+i
,然后将def
包装到jQuery对象中,$(def)
,函数:
..$(def).html()..
更新
如果我再次误解了您,您要做的是呈现变量news1
、news2
和news3
,那么您应该将这些变量放入数组中
如果不使用数组,则无法从JavaScript中的字符串引用变量
如果是这种情况,您的更新代码如下:
<script>
$.get('company-news.html',
function(data){
var newsData = [];
newsData["news1"] = $(data).find('#news1 + p');
newsData["news2"] = $(data).find('#news2 + p');
newsData["news3"] = $(data).find('#news3 + p');
// see how many news items there are (there's probably a more graceful way of doing this!):
if (newsData["news1"].html() == null){
var items = 0;
} else if (newsData["news2"].html() == null){
var items = 1;
} else if (newsData["news3"].html() == null){
var items = 2;
} else {
var items = 3;
}
if (items == 0){
$('#news-autoloader').append('<h3>No News.</h3>');
} else {
for (i=1; i<=items; i++){
var abc = '#news' + i;
var def = 'news' + i;
var url = 'a href="company-news.html#news' +i;
$('#news-autoloader').append($(abc,data)).append('<p>' + $(newsData[def]).html().substr(0, 175) + ' <' + url + '">More</a></p>');
}
}
}, 'html');
</script>
$.get('company-news.html',
功能(数据){
var newsData=[];
newsData[“news1”]=$(数据)。查找(“#news1+p”);
newsData[“news2”]=$(数据)。查找(“#news2+p”);
newsData[“news3”]=$(数据)。查找(“#news3+p”);
//看看有多少条新闻(可能有一种更优雅的方式可以做到这一点!):
if(newsData[“news1”].html()==null){
var项目=0;
}else if(newsData[“news2”].html()==null){
var项目=1;
}else if(newsData[“news3”].html()==null){
var项目=2;
}否则{
var项目=3;
}
如果(项目==0){
$(“#新闻自动加载器”).append('无新闻');
}否则{
对于(i=1;i1
将def.html()
更改为$(abc.html()
,因为它还不是JQuery对象
2您可以将每个新闻对象存储在一个数组中,然后通过该数组循环添加您的项目
var newsItems = [];
for(var i = 1; i < 4; i++){
var newsElem = $(data).find('#news' + i + ' + p');
if(newsElem.html() != null){
newsItems.push(newsElem);
}
}
一,
将def.html()
更改为$(abc.html()
,因为它还不是JQuery对象
2您可以将每个新闻对象存储在一个数组中,然后通过该数组循环添加您的项目
var newsItems = [];
for(var i = 1; i < 4; i++){
var newsElem = $(data).find('#news' + i + ' + p');
if(newsElem.html() != null){
newsItems.push(newsElem);
}
}
如果我的答案解决了你的问题,请接受它,这样问题就不会被忽略。谢谢:)如果我的答案解决了你的问题,请接受它,这样问题就不会被忽略。谢谢:)我现在的意图是…append(“”+news1.html()…
…append(“”+news2.html()…
…通过变量def
和迭代编号进行追加(“”+news3.html()…
)很高兴提供帮助!祝你好运!我现在的意图是…追加(“”+news1.html()…
+news2.html()…
+news2.html()。)..
通过变量def
和迭代编号…:)很高兴能帮上忙!祝你好运!当我更改为$(def).html()
时,我没有定义。因为它应该是$(新闻项[def])
,就像我的答案中那样-他只是忘了把它放在我的位置上