Próbuję ustawić kolor tła dla zmiennej ID +, ale nie mogę tego zrozumieć. Musi być coś naprawdę małego, że nie jestem świadomy.

Oto co mam:

var abc = $dialog.data( "url" );
alert(abc)

Te alerty: Item1

var cde = '#' + abc
alert(cde)

Te alerty: # element1

Na razie w porządku. Teraz próbuję zmienić tło dla tego identyfikatora. Więc:

To działa:

$(body).css('background-color', 'black');

To nie :

cde.css('background-color', 'black');
$(cde).css('background-color', 'black');
$("#" + abc).css('background-color', 'black');

Wszystkie są w tej samej funkcji.

Co ja robię źle?

Wielkie dzięki

1
jQuerybeast 9 listopad 2011, 18:59

5 odpowiedzi

Najlepsza odpowiedź

Jedynym powodem, dla którego widzę, że twój kod nie działa, jest to, że wartość, którą przechodzisz do jQuery (mianowicie CDE lub "#" + ABC) nie jest typu "ciąg".

Możesz zrobić jakiś test dla tego:

var test = "#item1";
alert(test === cde);
alert(typeof(cde));

Jeśli typ nie jest ciągiem, możesz po prostu zrobić:

$(cde.toString()).css('background-color', 'black');
2
Dominic Goulet 9 listopad 2011, 15:10

Jeśli spróbujesz tego, czy działa?

$('#item1').css('background-color', 'black');
3
Amy 10 listopad 2011, 03:43

Zamiast używać alert(), użyj console.log().

alert() ma zwyczaj automatycznego wywołania .toString() na obiektach, a także tablice spłaszczające.

Spodziewam się, co się dzieje, jest to, że twoja zmienna abc nie jest w rzeczywistości ciągiem, więc to, co prawdopodobnie masz, jest wynikiem:

'#' + abc.toString()
0
Alnitak 9 listopad 2011, 15:20

Edytowany: Co powiesz na zmuszanie go do takiego sznurka?

$("" + cde).css('background-color', 'black');
0
Marthin 9 listopad 2011, 15:35
document.getElementById('item1').style.backgroundColor='black';

To zawsze działa!

-2
Vitim.us 10 listopad 2011, 16:14