2017-01-13 4 views
0

Здесь я повторяю один и тот же код снова и снова и просто увеличивая имена переменных. То же самое со ссылкой на URL-адрес канала для утилиты RSS2JSON. Могу ли я как-то написать это, поэтому мне не нужно повторять? На самом деле у меня есть 8 разных каналов, которые я бы хотел использовать.Вместо того, чтобы повторять блоки кода, более эффективный способ написать этот javascript?

<script type="text/javascript"> 
     var cpacontent = document.getElementById('cpa'); 
     function showFeed(data){ 
      if(data.status == 'ok'){  
       var feedlength = data.items.length; 
       var output = ''; 
       for(var i=0;i<1;++i){ 
        output += '<p><a href="' + 
        data.items[i].link + '" target="_blank" >' + 
        data.items[i].title + '</a>'; 
       } 
       cpacontent.innerHTML = output; 
      } 
     } 

     var fscontent = document.getElementById('fs'); 
     function showFeed2(data){ 
      if(data.status == 'ok'){  
       var feedlength2 = data.items.length; 
       var output2 = ''; 
       for(var i=0;i<1;++i){ 
        output2 += '<p><a href="' + 
        data.items[i].link + '" target="_blank" >' + 
        data.items[i].title + '</a>'; 
       } 
       fscontent.innerHTML = output2; 
      } 
     } 
     var wealthcontent = document.getElementById('wealth'); 
     function showFeed3(data){ 
      if(data.status == 'ok'){  
       var feedlength3 = data.items.length; 
       var output3 = ''; 
       for(var i=0;i<1;++i){ 
        output3 += '<p><a href="' + 
        data.items[i].link + '" target="_blank" >' + 
        data.items[i].title + '</a>'; 
       } 
       wealthcontent.innerHTML = output3; 
      } 
     }  
</script> 
<script type="text/javascript" src="http://rss2json.com/api.json?callback=showFeed1&rss_url=http%3A%2F%2Ffeedurlplaceholder1"></script> 

<script type="text/javascript" src="http://rss2json.com/api.json?callback=showFeed2&rss_url=http%3A%2F%2Ffeedurlplaceholder2"></script> 

<script type="text/javascript" src="http://rss2json.com/api.json?callback=showFeed3&rss_url=http%3A%2F%2Ffeedurlplaceholder3"></script> 
+0

_Can я как-то пишу это, так что я не должен повторять _ Да, вы можете?! Вам нужно только/иметь 1 функцию showFeed() –

ответ

0

Добавить второй параметр функции для принятия элемента.

0

Что-то вроде:

<script> 
function myFunction(selectorID, data) { 
    var element = document.getElementById('selectorID'); 
    if(data.status == 'ok'){  
     var dataLength = data.items.length; 
     var output = ''; 
     for(var i = 0; i < 1; ++i){ 
      output += '<p> <a href="' + 
      data.items[i].link + '" target="_blank" >' + 
      data.items[i].title + '</a>'; 
     } 
     cpacontent.innerHTML = output; 
    } 
} 

myFunction("cpa", cpaData); 
myFunction("fs", fsData); 
myFunction("wealth", wealthData); 
</script> 
+0

Я даю этот снимок, но заметил, что в вызове API есть обратный вызов var, который изменяется для каждого ... (showFeed1, showFeed2, showFeed3), поэтому мне понадобится это для увеличения в качестве имени функции, если это имеет смысл. – Andrew

0

Надеется, что вы делаете хорошо .. !!

вы можете использовать одну функцию showFeed() с двумя параметрами, которые data и varFlag следующим образом:

<script type="text/javascript"> 
    function showFeed(data, varFlag){ 
     if(data.status == 'ok'){  
      var feedlength = data.items.length; 

      var output = ''; 
      for(var i=0;i<1;++i){ 
       output += '<p><a href="'; 
       output += data.items[i].link + '" target="_blank" >'; 
       output += data.items[i].title + '</a>'; 
      } 

      if(varFlag == 'cpa') { cpacontent.innerHTML = output; } 

      if(varFlag == 'fs') { fscontent.innerHTML = output; } 

      if(varFlag == 'wealth') { wealthcontent.innerHTML = output; } 
     } 
    } 

    var cpacontent = document.getElementById('cpa'); 
    showFeed(data, 'cpa'); 

    var fscontent = document.getElementById('fs'); 
    showFeed(data, 'fs'); 

    var wealthcontent = document.getElementById('wealth');  
    showFeed(data, 'wealth');  
</script> 

 Смежные вопросы

  • Нет связанных вопросов^_^