Как мога динамично да създавам дата атрибути в клас?

+7 гласа
65 прегледа
попитан 2016 юни 21 в PHP от Vasil.Metodiev. (1,200 точки)
Интересува ме как мога динамично да създавам дата атрибути в клас? Бихте ли ми помогнали?

2 отговори

+1 глас
отговорени 2016 юни 21 от VeskoNikolov (1,640 точки)

Въпроса е малко неясен, но ще опитам да помогна.  

<article
  id="electriccars"
  data-columns="3"
  data-index-number="12314"
  data-parent="cars">
...
</article>

При така изписан елемент може да прочетем стойностите чрез чист JavaScript по следния начин: 

//така избираме елемента
var article = document.getElementById('electriccars');

//така присвояваме на променливата "columns" стойността на дата атрибута
var columns = article.dataset.columns // "3"
//същото за index_num и parent
var index_num = article.dataset.indexNumber // "12314"
var parent = article.dataset.parent // "cars"

И може да задаваме дата атрибути по следния начин:

article.dataset.someAttributeNameAndWutever = "mno mi e lud js-a bate"

Това ще доведе до следния HTML: 

<article
  id="electriccars"
  data-columns="3"
  data-index-number="12314"
  data-parent="cars"
  data-some-attribute-name-and-wutever="mno mi e lud js-a bate">
...
</article>

За постигане на същия ефект, но с jQuery бихме ползвали следното: 

var $element = $('#electriccars');

//Така вземаме стойността на даден дата атрибут
var columns = $element.data('columns');

//Тук е важно да се посочи, че формата на името трябва да е data-*
//отделните думи се делят с тирета.
$element.attr('data-some-attribute-name-and-wutever', 'pak mi e mno lud be bratle');

//тук се намира зададената стойност
//При вземането на създадения атрибут не се пише data-
document.write($element.data('some-attribute-name-and-wutever'));
0 гласа
отговорени 2016 юни 22 от JanNikolov (150 точки)
В php може да използваш $this->$varName = $value; Ако искаш да създадеш свойствата на обекта, още със създаване на инстанция може да стане по следния начин:

class Test
{
    public function __construct($array)
    {
        foreach ($array as $varName => $value) {
        $this->$varName = $value;
        }
    }
}
 

Така ще получиш променливи, с име-ключа на масива и стойност- отговарящата на ключа стойност. Имай предвид че всички променливи които създадеш по този начин са с видимост public.
...