从外部链接每5秒更改一次文本

时间:2014-03-28 19:53:48

标签: javascript jquery dynamic text external

我找到了一个有效的jQuery,可以随着时间的推移动态更改文本,并具有淡入淡出效果。 我希望通过外部链接自动添加这些字词:Words Page

我该怎么做?

我的目标是保持JS文件小/最小,因为我有更多其他jQuery的代码。

感谢任何指导!

检查我的:enter link description here

HTML

<span class="textbox">Stylish</span>

CSS

span.textbox{
    display: inline;
    float: left;
    font-size: 20px;
    margin-top: 50px;
    margin-left: 50px;
    color: #131313;
    font-weight: bold;
    letter-spacing: 1px;
}

JS

$(document).ready(function() {

   // List your words here:
var words = [
    'Awesome',
    'Special',
    'Sofisticated',
    'Simple',
    'Great',
    'Better',
    'Stronger',
    'Stylish',
    'Flawless',
    'Envied',
    'Strong',
    'Sucessful',
    'Grow',
    'Innovate',
    'Global',
    'Knowledgable',
    'Solid'
    ], i = 0;

setInterval(function(){
    $('.textbox').fadeOut(500, function(){
        $(this).html(words[i=(i+1)%words.length]).fadeIn(500);
    });
}, 5000);

});

4 个答案:

答案 0 :(得分:2)

使用jQuery.ajax()

$.ajax('http://www-958.ibm.com/software/data/cognos/manyeyes/datasets/5-adjectives-to-describe-company-2/versions/1.txt').done(function(response, status) {
    // Check for error result (404, 500, etc)
    if (status !== 'error')
    {
        // Split words using ", " as separator to words array.
        var words = response.split(", ");
        // Your code here to change texts. Nothing changed.
        setInterval(function(){
            $('.textbox').fadeOut(500, function(){
                $(this).html(words[i=(i+1)%words.length]).fadeIn(500);
            });
        }, 5000);
    }
});

但是由于跨域错误,您将无法获得此网址。

将txt复制到您的域或进行重定向。

答案 1 :(得分:1)

结帐https://api.jquery.com/jQuery.get/

例如

var words = {};

$.get( "http://www-958.ibm.com/software/data/cognos/manyeyes/datasets/5-adjectives-to-describe-company-2/versions/1.txt", function( data ) {
    words = data.split(',');
});

data是从服务器返回的内容 - &gt; .split从一个字符串中创建数组,其中''内的位是分隔符。

修改

如果由于跨域而无法使用$ .get,答案是:

在您的服务器上创建脚本(wordslist.php)

使用CURL获取页面 - &gt;将内容添加到变量$wordsList,然后执行

return $wordsList;

然后对网址&#39; wordslist.php&#39;进行$.get。代替。

答案 2 :(得分:1)

您好需要进行ajax调用,然后将返回的数据拆分为数组,因为它不是有效的json字符串。

尝试以下代码

$(document).ready(function(){
            $.ajax({
                dataType: "html",
                url: "http://www-958.ibm.com/software/data/cognos/manyeyes/datasets/5-adjectives-to-describe-company-2/versions/1.txt",
                success: function(data) {
                    var words = data.split(', ');
                    var i = 0;
                    setInterval(function(){
                        $('.textbox').fadeOut(500, function(){
                            $(this).html(words[i=(i+1)%words.length]).fadeIn(500);
                        });
                    }, 5000);
                },
                error: function(data) {
                    console.log('error occured');
                }
            });
        });

如果您能够将txt文件修改为有效的json数组,则可以使用json或jsonp数据类型

答案 3 :(得分:1)

这是我的例子。您不能使用IBM很多眼睛,因为他们不允许跨域访问。但是,您可以使用培根Ipsum。我经常使用它为测试用例生成随机文本。这是伪代码:

  1. 对跨域资源进行AJAX调用
  2. 成功通话后,将数据加载到单词列表中。
  3. 然后开始你的超时。
  4. 代码(jsFiddle

    $(document).ready(function() {
           // List your words here:
        var words = [];
        var baconApi = 'https://baconipsum.com/api/?callback=?';
        var baconSettings = { 
                'type':'meat-and-filler',
                  'paras':'1' 
        };
    
        var baconCallback = function(bacon) {
            if (bacon && bacon.length > 0) {
                // Make word list
                bacon.map(function(meat) {
                    words = words.concat(meat.split(/ /));
                });
            }
            var i = 0;
            // Start Timer
            setInterval( function(){
                $('.textbox').fadeOut(500, function(){
                    $(this).html(words[i=(i+1)%words.length]).fadeIn(500);
                });
            }, 5000);
        };
    
        $.getJSON( baconApi, baconSettings, baconCallback);
    });