2013-10-27 5 views
-4

Что мне нужно, чтобы быть в состоянии передать строку в яваскрипте функции, функция задается в OnClick случае DIV,Как передать строку в качестве аргумента в яваскрипте функции

$("#div").html("<div id='suggestion' onclick='storetag("+response[i]['tagname']+")'><div id='postag' ><center><b>"+response[i]['tag']+"</b></center></div></div>"); 

здесь я не могу передать ответ [i] ['tagname'] на storetag(), так как он является строкой и требует кетов вокруг него

ответ

0

Вы должны поставить кавычки в строках, окружающих значения:

$("#div").html("<div id='suggestion' onclick='storetag(\""+response[i]['tagname']+"\")'><div id='postag' ><center><b>"+response[i]['tag']+"</b></center></div></div>"); 
+1

Почему downvote? Если вы не объясните, что это такое, что вы считаете неправильным, оно не может улучшить ответ. – Guffa

+0

это также правильный ответ + голосовать с моей стороны. – Manwal

+0

@BenjaminGruenbaum: Если вы не укажете, что это такое, что вы считаете настолько ужасным из-за кода, я даже не могу составить мнение о вашем мнении. – Guffa

0

Вместо использования встроенного JS, где вам нужно иметь дело с кодом, содержащимся в строки, сделайте это:

var div = $('<div id="suggestion"><div id="postag"><center><b></b></center></div></div>'); 
div.find('b').html(response[i]['tag']).on('click', function() { 
    storetag(response[i]['tagname']); 
}); 
$("#div").html(div); 

Таким образом вы сначала создаете DOM, а затем должным образом присоединяете обработчик событий вместо того, чтобы помещать JS-код в строку.

В случае, если запустить этот код в цикле (i делает это скорее всего):

  • НЕ используйте id="suggestion". ИДЫ ДОЛЖНЫ быть уникальными!
  • Используйте следующий JS код, чтобы правильное i значение используется, когда обработчик выполняет:

    var div = $('<div id="suggestion"><div id="postag"><center><b></b></center></div></div>'); 
    div.find('b').html(response[i]['tag']); 
    (function(tagname) { 
        div.on('click', function() { 
         storetag(tagname); 
        }); 
    })(response[i]['tagname']); 
    $("#div").html(div); 
    
+0

thanx, да, он запускается в цикле и о том, что id уникален, я указал правила CSS для предложения« id », и мне нужен каждый div, созданный цикл должен иметь один и тот же идентификатор, так что мне не нужно указывать правила для каждого идентификатора, который производит цикл. –

+1

Что вы делаете ** НЕПРАВИЛЬНО **! Вместо этого используйте классы CSS! Вы можете использовать их на столько элементов, сколько хотите. – ThiefMaster

+0

hmm, никогда не рассматривался tht, thnx снова –

0

попробуйте это

$("#div").html("<div id='suggestion' onclick='storetag(\""+response[i]['tagname']+"\")'><div id='postag' ><center><b>"+response[i]['tag']+"</b></center></div></div>"); 

здесь у меня есть «побег в вашем коде

+0

Это правильный ответ, вы единственный человек, который прочитал вопрос. –

+0

thanku @web_bod благодарит много. Appriciated. Вы также можете принять этот ответ. – Manwal

+0

@DeepakManwal Thanx, проблема решена –

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