Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Даже не знаю как это описать... (https://javascript.ru/forum/misc/16521-dazhe-ne-znayu-kak-ehto-opisat.html)

z700i 11.04.2011 17:17

Даже не знаю как это описать...
 
Smiles=[
    {
        id:':),:-)',
        value:'<img src="~~~">'
    },
    {
        id:':D,:-D,XD,X-D',
        value:'<img src="~~~">'
    },
    {
        id:'~,~~,~~~',
        value:'<img src="~~~">'
    }
];

можно ли написать цикл который будет брать из массива первый объект доставать оттуда значение "id" испоьзовать "," как разделитель и заменять совпадения на "value" затем брать второй объект и проделывать тоже самое и т.д.

Matre 11.04.2011 18:17

function getSmile(smile) {
	for (var i = 0; i < Smiles.length; i++)
		if (new RegExp(Smiles[i].id.replace(/,/g, "|").replace(/([()])/g, "\\$1")).test(smile))
			return Smiles[i].value;
}

getSmile(":)"); // <img src='...' />

рони 11.04.2011 18:35

Почти тоже самое )))
<script type="text/javascript">
var Smiles=[
    {
        id:':),:-)',
        value:'111'
    },
    {
        id:':D,:-D,XD,X-D',
        value:'222'
    },
    {
        id:'~,~~,~~~',
        value:'333'
    }
];
var str = " :)  ~   XD   :)";
function getSmile(b) {
    for (var c = Smiles.length, a = 0; a < c; a++)
        var d = Smiles[a].id.replace(/([\$\^\*\(\)\+\[\]\{\}\|\.\/\?\\])/g, "\\$1").split(",").join("|"),
        b = b.replace(RegExp(d, "gim"), Smiles[a].value);
    return b
};
document.write(getSmile(str));
</script>

z700i 11.04.2011 19:35

во втором скрипте работает все только при выводе не цифорок а HTML кода вида
<img src="http://~~~.ru/~~_JS/skypeSmiles/emoticon-0100-smile.gif">

он вставляет только половину
Smiles/emoticon-0100-smile.gif">

Matre 11.04.2011 19:46

z700i, нужно не брезговать и юзать мой код.

P.S. он был немного нерабочим, поправил.

z700i 11.04.2011 22:01

Matre, я воспользовался вторым скриптом потому что мне нужно сначала взять теуст из <DIV> по ID потом в этом тексте заменить символьные смайлики на картинки и вернуть на место. второй скрипт как раз работает с вытащенной строкой.


Часовой пояс GMT +3, время: 02:46.