Как получить значение из ассоциативного массива?
Всем привет. Мне нужно получить из массива значение price_html , т.е. <span class=\ "price\"><span class=\ "amount\">260.000 руб.<\/span><\/span>:
var variations_form = [{"variation_id":3354,"variation_is_visible":true,"variation_is_active":true,"is_purchasable":true,"display_price":260000,"display_regular_price":260000,"attributes":{"attribute_pa_size":"large"},"image_src":"","image_link":"","image_title":"","image_alt":"","price_html":" <span class=\ "price\"><span class=\ "amount\">260.000 руб.<\/span><\/span>" Навскидку вот так не прокатывает.. variations_form['price_html'] |
ligisayan,
если массив то наверно есть и индекс :-? |
Цитата:
|
Цитата:
|
Цитата:
А по ключам получаете объекты |
Цитата:
ligisayan, попробуйте решить сами, прежде чем нажать Показать исходный код var variations_form = [{ "variation_id": 3354, "variation_is_visible": true, "variation_is_active": true, "is_purchasable": true, "display_price": 260000, "display_regular_price": 260000, "attributes": { "attribute_pa_size": "large" }, "image_src": "", "image_link": "", "image_title": "", "image_alt": "", "price_html": '<span class="price"><span class="amount">260.000 руб.</span></span>' }]; alert(variations_form[0]["price_html"]); |
Цитата:
<!DOCTYPE html> <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <title>ГГ</title> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script> <link rel="stylesheet" href="test.css"> </head> <body> <script> var variations_form = [{"variation_id":3354,"variation_is_visible":true,"variation_is_active":true,"is_purchasable":true,"display_price":260000,"display_regular_price":260000,"attributes":{"attribute_pa_size":"large"},"image_src":"","image_link":"","image_title":"","image_alt":"","price_html":"<span class=\"price\"><span class=\"amount\">260.000 руб.<\/span><\/span>"}]; alert(variations_form[0]['price_html']); </script> </body> </html> |
рони, EmperioAf Делаю 3 вывода через консоль
console.log(variations_form); console.log(variations_form[0]); console.log(variations_form[0]['price_html']); получаю: [{"variation_id":3354,"variation_is_visible":true,"variation_is_active":true,"is_purchasable":true,"display_price":260000,"display_regular_price":260000,"attributes":{"attribute_pa_size":"large"},"image_src":"","image_link":"","image_title":"","image_alt":"","price_html":"<span class=\"price\"><span class=\"amount\">260.000 руб.<\/span><\/span>","availability_html":"","sku":"","weight":" kg","dimensions":"","min_qty":1,"max_qty":"","backorders_allowed":false,"is_in_stock":true,"is_downloadable":false,"is_virtual":false,"is_sold_individually":"no"},{"variation_id":3355,"variation_is_visible":true,"variation_is_active":true,"is_purchasable":true,"display_price":160000,"display_regular_price":160000,"attributes":{"attribute_pa_size":"medium"},"image_src":"","image_link":"","image_title":"","image_alt":"","price_html":"<span class=\"price\"><span class=\"amount\">160.000 руб.<\/span><\/span>","availability_html":"","sku":"","weight":" kg","dimensions":"","min_qty":1,"max_qty":"","backorders_allowed":false,"is_in_stock":true,"is_downloadable":false,"is_virtual":false,"is_sold_individually":"no"},{"variation_id":3356,"variation_is_visible":true,"variation_is_active":true,"is_purchasable":true,"display_price":80000,"display_regular_price":80000,"attributes":{"attribute_pa_size":"small"},"image_src":"","image_link":"","image_title":"","image_alt":"","price_html":"<span class=\"price\"><span class=\"amount\">80.000 руб.<\/span><\/span>","availability_html":"","sku":"","weight":" kg","dimensions":"","min_qty":1,"max_qty":"","backorders_allowed":false,"is_in_stock":true,"is_downloadable":false,"is_virtual":false,"is_sold_individually":"no"}] [ undefined но undefined - это не то, что мне нужно |
ligisayan,
значит нет у вас ничего в variations_form на момент проверки иначе всё нормально выводится вывод третьего элемента массива var variations_form = [{ "variation_id": 3354, "variation_is_visible": true, "variation_is_active": true, "is_purchasable": true, "display_price": 260000, "display_regular_price": 260000, "attributes": { "attribute_pa_size": "large" }, "image_src": "", "image_link": "", "image_title": "", "image_alt": "", "price_html": "<span class=\"price\"><span class=\"amount\">260.000 руб.<\/span><\/span>", "availability_html": "", "sku": "", "weight": " kg", "dimensions": "", "min_qty": 1, "max_qty": "", "backorders_allowed": false, "is_in_stock": true, "is_downloadable": false, "is_virtual": false, "is_sold_individually": "no" }, { "variation_id": 3355, "variation_is_visible": true, "variation_is_active": true, "is_purchasable": true, "display_price": 160000, "display_regular_price": 160000, "attributes": { "attribute_pa_size": "medium" }, "image_src": "", "image_link": "", "image_title": "", "image_alt": "", "price_html": "<span class=\"price\"><span class=\"amount\">160.000 руб.<\/span><\/span>", "availability_html": "", "sku": "", "weight": " kg", "dimensions": "", "min_qty": 1, "max_qty": "", "backorders_allowed": false, "is_in_stock": true, "is_downloadable": false, "is_virtual": false, "is_sold_individually": "no" }, { "variation_id": 3356, "variation_is_visible": true, "variation_is_active": true, "is_purchasable": true, "display_price": 80000, "display_regular_price": 80000, "attributes": { "attribute_pa_size": "small" }, "image_src": "", "image_link": "", "image_title": "", "image_alt": "", "price_html": "<span class=\"price\"><span class=\"amount\">80.000 руб.<\/span><\/span>", "availability_html": "", "sku": "", "weight": " kg", "dimensions": "", "min_qty": 1, "max_qty": "", "backorders_allowed": false, "is_in_stock": true, "is_downloadable": false, "is_virtual": false, "is_sold_individually": "no" }] alert(variations_form[2]['price_html']); |
Цитата:
выводит первый символ массива '[', если 1 - то второй '{', 2 - 3ий '"' и т.д. |
ligisayan,
variations_form это у вас обычный массив и обращаться к элементам можно по индексу -- а вот уже сам элемент variations_form[0] ... или variations_form[2] обьект и в нём идёт обращение по ключам Цитата:
самая длинная цепочка будет для примера variations_form[2]["attributes"]["attribute_pa_size"] variations_form - массив выбираем по индексу variations_form[2] - обьект выбираем по ключу variations_form[2]["attributes"] - снова обьект выбираем по ключу, был бы attributes обычный массив выбирали бы по индексу |
Цитата:
var variationsFormParsed = JSON.parse(variations_form); и тогда уже можно обращаться к: console.log(variationsFormParsed[0]['price_html']); |
Цитата:
|
Цитата:
console.log(variations_form[0]['price_html']); который равен: <span class="price"><span class="amount">260.000 руб.</span></span> класс price чтобы можно было поменять его стили? |
Цитата:
|
Цитата:
var $oj = variations_form[0]['price_html']; $($oj).filter(".price").css("top" , (height+32)+"px"); $($oj).filter(".price").html().replace(/(new price)/, "$1"); рони а каким образом? выше 2 варианта не работают.. |
ligisayan,
а где добавление на страницу ? или вам нужно в текст добавить? |
Цитата:
|
ligisayan,
зачем это делать мне непонятно - есть же css на странице меняйте там стили и сервер меняйте там классы. или уж создайте элемент на странице и украшивайте как хотите. <!DOCTYPE HTML> <html> <head> <title>Untitled</title> <meta charset="utf-8"> </head> <body> <script> var variations_form = [{ "variation_id": 3354, "variation_is_visible": true, "variation_is_active": true, "is_purchasable": true, "display_price": 260000, "display_regular_price": 260000, "attributes": { "attribute_pa_size": "large" }, "image_src": "", "image_link": "", "image_title": "", "image_alt": "", "price_html": "<span class=\"price\"><span class=\"amount\">260.000 руб.<\/span><\/span>", "availability_html": "", "sku": "", "weight": " kg", "dimensions": "", "min_qty": 1, "max_qty": "", "backorders_allowed": false, "is_in_stock": true, "is_downloadable": false, "is_virtual": false, "is_sold_individually": "no" }, { "variation_id": 3355, "variation_is_visible": true, "variation_is_active": true, "is_purchasable": true, "display_price": 160000, "display_regular_price": 160000, "attributes": { "attribute_pa_size": "medium" }, "image_src": "", "image_link": "", "image_title": "", "image_alt": "", "price_html": "<span class=\"price\"><span class=\"amount\">160.000 руб.<\/span><\/span>", "availability_html": "", "sku": "", "weight": " kg", "dimensions": "", "min_qty": 1, "max_qty": "", "backorders_allowed": false, "is_in_stock": true, "is_downloadable": false, "is_virtual": false, "is_sold_individually": "no" }, { "variation_id": 3356, "variation_is_visible": true, "variation_is_active": true, "is_purchasable": true, "display_price": 80000, "display_regular_price": 80000, "attributes": { "attribute_pa_size": "small" }, "image_src": "", "image_link": "", "image_title": "", "image_alt": "", "price_html": "<span class=\"price\"><span class=\"amount\">80.000 руб.<\/span><\/span>", "availability_html": "", "sku": "", "weight": " kg", "dimensions": "", "min_qty": 1, "max_qty": "", "backorders_allowed": false, "is_in_stock": true, "is_downloadable": false, "is_virtual": false, "is_sold_individually": "no" }] </script> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script> <script> $(function(){ var s = variations_form[2]['price_html'], height = 100; s = $('<div/>', {html : s}); s.find('.price').addClass("new").css({"top": (height+32)+"px"}); variations_form[2]['price_html'] = s.html() alert(variations_form[2]['price_html']) }); </script> </body> </html> |
Часовой пояс GMT +3, время: 02:47. |