2013-08-26 5 views
0

Я отредактировал код, обновленный код ниже, Этот код не может получить метатег ключевых слов, поэтому он не работает.Конкатенатные строки в JavaScript

старое описание:Я пытаюсь concatinate строки, чтобы получить finalUrl, но я не в состоянии сделать это becuase переменных бирок. Мне нужно получить метатег ключевых слов страницы и добавить его, чтобы получить finalUrl. Любая помощь?

<script type="text/javascript"> 


    var tags=$('meta[name=keywords]').attr("content"); 
    var gameurl = "http://xyz/abc/details/"; 
    var jsn = ".json?callback=showGameDetail"; 
    var finalUrl= gameurl.concat(tags).concat(jsn); 


function loadJSON(url) { 
    var headID = document.getElementsByTagName("head")[0]; 
    var newScript = document.createElement('script'); 
     newScript.type = 'text/javascript'; 
     newScript.src = url; 
    headID.appendChild(newScript); 
} 

function showGameDetail(feed){ 
    var title = feed.title; 



    var game_url = feed.pscomurl; 
    var packart_url = feed.Packart; 
    $("#bnr-ads-box").html("<img src='"+"http://abc.com/"+packart_url+"'>"); 




} 

loadJSON(finalUrl); 
</script> 
<div id="bnr-ads-box"></div> 
+1

Используйте [плюс] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/String_Operators) : 'var finalUrl = gameurl + tags + jsn;' - Это очень googlable, используя конкатенацию строк, чтобы перейти к MDN – mplungjan

+0

Если вы пытаетесь оценить вывод сценария jquery, вы не должны помещать его внутри цитаты.Непосредственно right 'var tags = $ ('meta [name = keywords]'). Attr (" content ");' –

+0

Я уверен, что здесь отсутствует значение var var. Всегда отлаживайте, получаете ли вы правильное значение, если вы собираетесь использовать его позже. – Akki619

ответ

1
<!DOCTYPE html> 
<html> 
    <head> 
     <meta id="metaK" name="keywords" content="customizable software for QuickBooks, QuickBooks-integrated, Method customization, CRM accounting, Method for QuickBooks, Method CRM, Method blog, Salesforce automation, Method online platform, QuickBooks customization, web-based platform, industry-specific, customer portal, Method Field Services, Method Manufacturing, ERP" /> 
     <script type="text/javascript" src="http://code.jquery.com/jquery-1.10.2.min.js"></script> 
    </head> 
<body> 

<p id="demo">Click the button to join two strings into one new string.</p> 

<button onclick="myFunction()">Try it</button> 

<script> 
function myFunction() 
{ 
var tags=$('meta[name=keywords]').attr("content"); 

var gameurl = "http://xyz/abc/names/"; 
var jsn = ".json?callback=showGameDetail"; 
var finalUrl= gameurl.concat(tags).concat(jsn); 

document.getElementById("demo").innerHTML=finalUrl; 
} 
</script> 

</body> 

</html> 
+0

Не работает, когда ** var tags = $ ('meta [name = keywords]'). Attr ("content"); ** Работает, если значение тега прост, скажем, var tags = "name_of_page " –

+0

@VarunLuthra Я изменил свой код. Попробуй. –

+0

В моей строке «теги», скажем, я получаю следующий вывод Ключевое слово1, ключевое слово2, ключевое слово3, ключевое слово4, но мне нужно использовать на Keyword1 для использования в моем finalUrl, чтобы сделать URL-адрес, как его достичь. –

1

изменить это

var tags="$('meta[name=keywords]').attr("content");";

в

var tags=$('meta[name=keywords]').attr("content"); 

также использовать этот код var finalUrl = gameurl + tags + jsn;

0

Ac tually метод CONCAT работает на струнах тоже (в хроме, по крайней мере), но рекомендуемый метод с использованием plus concatenation string operator

Вы, однако, отсутствуют некоторые вещи

  1. библиотека JQuery - Я предполагаю, что вы хотите, что, поскольку у вас есть $ (...) в примере
  2. кодирования строки из ключевых слов - я использую encodeURIComponent обрабатывать возможные строки и кавычки в ключевых словах

.

<!DOCTYPE html> 
<html> 
<head> 
    <title>Create a URL from keywords</title> 
    <meta name="keywords" content="These are tags" /> 
    <script src="http://code.jquery.com/jquery-1.10.2.min.js"></script> 
    <script> 
    function myFunction() { 
     var tags = $('meta[name=keywords]').attr("content"); 
     var URL ="http://xyz/abc/names/" + 
     encodeURIComponent(tags) + 
     ".json?callback=showGameDetail"; 
     window.console && console.log(URL); 
     $("#demo").html(URL);  
    } 
    </script> 
    <body> 
    <p id="demo">Click the button to join two strings into one new string.</p> 
    <button onclick="myFunction()">Try it</button> 
    </body> 
</html> 
+0

Вопрос был неправильным (фактически, отсутствующим) понятием сбрасывания строк. Я бы затронул это также в своем ответе (как я уже говорил) - по крайней мере, ради обучения. – Christian

+0

Есть ли кто-нибудь на спусковом подъеме? Почему это без комментариев? – mplungjan

1

Что вам нужно, чтобы избежать двойных кавычек внутри переменной метки, например, так:

var tags="$('meta[name=keywords]').attr(\"content\");"; 

решения Cris' тоже хорошо, но в некоторых случаях вам нужно будет иметь два комплекта двойные кавычки внутри строки, поэтому вы будете вынуждены правильно выполнять эвакуацию.

FYI: Escaping это процесс, имеющие специальные символы получения генерации строки, которые в противном случае вызывают бы проблемы, например, в JavaScript вы не можете иметь перевод строки, например:

var mystring = 'on 
a different line'; // <- this causes a syntax error 

Так можно было бы сделать следующее:

var mystring = 'on\na different line'; 
+0

См. Мой ответ, который использует encodeURIComponent, чтобы избежать этого. – mplungjan

+0

Фактически, @mplungjan покрыл больше материала, чем мое, но ему не хватает объяснений. :) – Christian

+0

Обновлено, пока вы прокомментировали :) – mplungjan

1

Tough спорно, вы можете использовать массив, который может быть сцеплены по телефону join():

var tags = $('meta[name=keywords]').attr("content"); 
var data = [ 
"http://xyz/abc/names/", 
encodeURIComponent(tags), 
".json?callback=showGameDetail" 
].join(''); 
$("#demo").html(data); 
+0

Euuw. По крайней мере, нажмите строки, если вы хотите использовать массив. – mplungjan

+1

Это очень элегантное решение, чем наличие всего материала в одной строке. Другой и элегантный способ состоял бы в том, чтобы иметь разные строки в правильно названных переменных: 'var url =" http: // xyz/abc/names/", query =" .json? Callback = showGameDetail "; var data = url + encodeURIComponent (tags) + query; ' – Christian

+0

Я не вижу элегантности по сравнению с наличием + в этом конкретном примере - он добавляет ненужные [] .join (" ") – mplungjan

1

Вы забыли включить JQuery

<!DOCTYPE html> 
<html> 
<head> 
<meta name="keywords" content="hello"/> 

<script type="text/javascript" src="http://code.jquery.com/jquery-1.10.2.min.js"></script> 
<script type="text/javascript"> 
function myFunction() 
{ 
alert("Hello World!"); 
var tags=$('meta[name=keywords]').attr("content"); 

var gameurl = "http://xyz/abc/names/"; 
var jsn = ".json?callback=showGameDetail"; 
var finalUrl= gameurl.concat(tags).concat(jsn); 
alert(finalUrl); 
} 
</script> 
</head> 

<body> 
<button onclick="myFunction()">Try it</button> 
</body> 
</html> 
+0

Как я уже указывал ... T – mplungjan

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