Javascript 传递要追加的变量

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

在主页上,JS将从新闻页面抓取最多三个新闻故事,并显示链接到完整故事的缩写版本。我遇到的问题是,我试图连接的一个变量没有按预期进行连接

主页:

<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])
,就像我的答案中那样-他只是忘了把它放在我的位置上