2013-12-01 3 views
1

Я использую firebase, чтобы получить эти данные, Я хотел бы добавить HREF теги к message.userName OUTPUTДобавить HREF в .text выход в JQuery

$('#winners').text('Winner:' + ' ' + message.userName + ' ' + ' '+ 'score:' + ' ' + message.score + ' ' + ' '+ 'Start time:' + ' ' + message.startTime + ' ' + ' '+ 'End time:' + ''  + message.endTime); 

Я попытался

$('#winners').text('Winner:' + ' ' + '<a href=\"scoreTracker.php?id='+message.userID +'\"> + ' message.userName + ' ' + ' '+ 'score:' + ' ' + message.score + ' ' + ' '+ 'Start time:' 
+ ' ' + message.startTime + ' ' + ' '+ 'End time:' + '' + message.endTime + '<\a>'); 
+0

Вы пытались изменить .text() на .html()? –

ответ

0

вы должны использовать Append() или HTML()

$('#winners').append('Winner:' + ' ' + message.userName + ' ' + ' '+ 'score:' + ' ' + message.score + ' ' + ' '+ 'Start time:' + ' ' + message.startTime + ' ' + ' '+ 'End time:' + ''  + message.endTime); 

это может помочь вам лучше понять:

http://api.jquery.com/category/manipulation/dom-insertion-inside/

+0

Осторожно ... ваш ответ открывает их потенциальным атакам XSS. – Brad

+0

Где я могу добавить href в ваш ответ выше? У меня проблемы с отображением текста. – user3052997

+0

Извините, вы меня предупреждаете или тот, кто задал вопрос?! – ProllyGeek

3

Чтобы избежать XSS атак (среди других странных проблем), добавить элемент якоря и его текст. Это означает, что вам не нужно беспокоиться о том, чтобы избежать чего-либо.

$('#winners').append([ 
    'Winner: ', 
    $('<a>') 
    .attr('href', 'scoreTracker.php?id=' + encodeURIComponent(message.userId)) 
    .text(
     message.userName + ' score: ' + message.score + ' Start time: ' + message.startTime + ' End time: ' + message.endTime 
    ) 
]); 

Если ваш HTML-код становится намного сложнее, могу ли я предложить механизм шаблона JavaScript? Для большинства проектов я использую Swig, но есть много вариантов.

+1

Я думаю, что вам не хватает закрывающей круглой скобки: 'encodeURIComponent (message.userId) .text ('. –

+0

@FelixKling Хороший улов, спасибо Феликс. – Brad

+0

вот демо: http://jsfiddle.net/nn007/qU3K6/ – Noampz

0

Как @Brad, так и @ProllyGeek являются правильными, но решение Brad лучше всего дает потенциальный риск нападений XSS. Вот его код, просто немного очищенный для лучшей читаемости. :)

$('#winners').append([ 
    'Winner: ', 
    $('<a />') 
     .attr('href', 'scoreTracker.php?id=' + encodeURIComponent(message.userId) 
     .text(message.userName + ' score: ' + message.score + ' Start time: ' + message.startTime + ' End time: ' + message.endTime) 
]); 

Надеюсь, это поможет!

+0

Спасибо @jmdb. Я на самом деле просто отредактировал его и очистил его пару минут назад. Также добро пожаловать в Stack Overflow! Вы можете редактировать чужой пост, если вы 'd like. – Brad

+0

объект не имеет метода text - это сообщение об ошибке, которое я получаю. try .html вместо .text такая же ошибка obect не имеет метода' html 'каких-либо предложений? – user3052997

+0

@ user3052997: Вам нужен код Брэда, а не этот 1. Это неверно, это должно быть '$ ('')', а не '$ ('a')'. Хотя я не думаю, что это запустило бы такую ​​ошибку. –

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