ورود

View Full Version : سوال: ذخیره استایل تگ ها با جاوااسکریپت



ashrafi_eng
پنج شنبه 10 تیر 1395, 02:48 صبح
سلام
من دنبال راهی هستم که با جاوااسکریپت بتونم مقدار مشخصه ی style چند تگ رو به صورت جداگانه داخل دیتابیس ذخیره کنم...
ینی styleهر تگ ، داخل یک ستون از جدول دیتابیسم ذخیره بشه....

ممنون میشم راهنمایی کنید....

ashrafi_eng
پنج شنبه 10 تیر 1395, 13:18 عصر
اصل برنامه به این صورته که در حین اجرا ، با استفاده از جی کوئری ، یک سری مشخصات جدید به چند تا از تگ هام اعمال میکنم...
مثلا :

$("#tag1").css("height",height);

لطفا اگه کسی ایده ای برای ذخیره کردن استایلی که با این روش ایجاد شده ، داره ، راهنمایی کنه...ممنون

plague
پنج شنبه 10 تیر 1395, 15:11 عصر
برای چی میخای تو دیتابیس ذخیره کنید استایل رو !؟
جاوا اسکریپت نمیتونه با دیتابیس ارتباط برقرار کنه شما نیاز به یه زبان بک اند تحت سرور مثل php دارید

ashrafi_eng
پنج شنبه 10 تیر 1395, 16:04 عصر
خب توی برنامه نیاز دارم استایل هایی که کاربر در حین استفاده از سایت ایجاد میکنه رو ذخیره کنم...برای ذخیره کردن هم از اجکس و php استفاده میکنم....
مشکل من اینه که استایل ایجاد شده رو چه جوری به دست بیارم....!!!!

ashrafi_eng
پنج شنبه 10 تیر 1395, 16:05 عصر
برای چی میخای تو دیتابیس ذخیره کنید استایل رو !؟
جاوا اسکریپت نمیتونه با دیتابیس ارتباط برقرار کنه شما نیاز به یه زبان بک اند تحت سرور مثل php دارید

خب توی برنامه نیاز دارم استایل هایی که کاربر در حین استفاده از سایت ایجاد میکنه رو ذخیره کنم...برای ذخیره کردن هم از اجکس و php استفاده میکنم....
مشکل من اینه که استایل ایجاد شده رو چه جوری به دست بیارم....!!!!

plague
پنج شنبه 10 تیر 1395, 19:02 عصر
استایل رو تو ی خود تگ HTML مینویسن یا خارج از اون ؟

ashrafi_eng
پنج شنبه 10 تیر 1395, 19:06 عصر
استایل رو تو ی خود تگ HTML مینویسن یا خارج از اون ؟

وقتی که با جی کوری به تگ مشخصه ای میدم، این مشخصه به خود اون تگ اضافه میشه...مثلا بعد از اجرای این دستور:
$("#tag1").css("height",height);

تگ مورد نظر که آی دی tag1داره ، به این صورت تغییر میکنه :
<div id="tag1" style="height:100px;" > </div>

plague
پنج شنبه 10 تیر 1395, 19:32 عصر
تمام چیزایی که در قسمت ابتدایی تگ میبینی بهشون میگن attribute ... مثل id, class,style
محتوای اینا رو تو جیکوئی با .attr میتونی بگیری مثلا برای style میشه
st = $('#tag1').attr('style');

ashrafi_eng
پنج شنبه 10 تیر 1395, 21:03 عصر
تمام چیزایی که در قسمت ابتدایی تگ میبینی بهشون میگن attribute ... مثل id, class,style
محتوای اینا رو تو جیکوئی با .attr میتونی بگیری مثلا برای style میشه
st = $('#tag1').attr('style');

ممنونم...فقط یه سوال دیگه...
میتونم برنامه رو جوری بنویسم که این مشخصه های سی اس اس ، به جای اتربیوت Style ، به یک کلاس مشخص توی فایل سی اس اس اضافه بشن؟؟؟

plague
پنج شنبه 10 تیر 1395, 23:23 عصر
خیر نمیشه ...........

alireza_s_84
جمعه 11 تیر 1395, 14:44 عصر
ممنونم...فقط یه سوال دیگه...
میتونم برنامه رو جوری بنویسم که این مشخصه های سی اس اس ، به جای اتربیوت Style ، به یک کلاس مشخص توی فایل سی اس اس اضافه بشن؟؟؟

بله میشه شما ابتدا یک المنت style میسازین بعد کلاس مورد نظر رو به اون اضافه میکنید بعد تمامی پراپرتی‌هایی که توی style دادین رو به اون کلاس تخصیص میدین و اون کلاس رو به المنت مورد نظر اضافه میکنید.
اینم نمونه کد برای اضافه کردن استایل و کلاس موردنظر به صورت dynamic:

var css = '.myClass { background: red; }',
head = document.head || document.getElementsByTagName('head')[0],
style = document.createElement('style');


style.type = 'text/css';
if (style.styleSheet){
style.styleSheet.cssText = css;
} else {
style.appendChild(document.createTextNode(css));
}


head.appendChild(style);

plague
جمعه 11 تیر 1395, 23:58 عصر
استارتر گفتن به فایل css اضافه بشه نه داکیومنت فعلی (احتمالا منظورشون یه فایل .css خارجی هستش )
روشی که این دوستمون گفته میاد یه تگ استایل به صفحه html فعلی اضافه میکنه و توی اون یک کلاس میسازه و.....
البته اگه انجام بدین اون روش رو , خوندن استایل با کدی که بالا گفتم احتمالا از کار میفته چون دیگه استایل توی اتریبوت المنت نیست

kb0y667
شنبه 19 تیر 1395, 04:36 صبح
همون کدی که دوست عزیز plague (http://barnamenevis.org/member.php?123420-plague) با jQuery انجام داد
حتی بدون جی کوئری هم امکان پذیر هست :

AT=document.getElementById("tag1").getAttribute("style");




همچنین کدی که دوست عزیز alireza_s_84 (http://barnamenevis.org/member.php?35861-alireza_s_84) استفاده کرد
خیلی طولانی و گیج کننده بنظر میرسه
درواقع ضرورتی نداره که یک استایل جدید بسازیم

بنده این روش رو پیشنهاد میکنم :

document.getElementsByTagName('style')[0].innerHTML+=AT;




یا اگه قصد دارید صفاتی که از
tag1
دریافت کردید رو ، بعنوان یک کلاس جدید ثبت کنید :

AT=document.getElementById("tag1").getAttribute("style");


AT=".newclass{"+AT+"}";


document.getElementsByTagName('style')[0].innerHTML+=AT;







بنده بخوام واسه خودم کدنویسی کنم ، این شکلی میشه :

document.getElementsByTagName('style')[0].innerHTML+=".newclass{"+document.getElementById("tag1").getAttribute("style")+"}";




:|




درمورد سخن آخر دوست عزیز plague (http://barnamenevis.org/member.php?123420-plague)


البته اگه انجام بدین اون روش رو , خوندن استایل با کدی که بالا گفتم احتمالا از کار میفته چون دیگه استایل توی اتریبوت المنت نیست


با اون روش خوندن استایل از کار نمی افته
تازمانیکه صفات style از تگ حذف نشده باشند

چون در تغییرات جدید همه صفات
هم در استایل css حضور دارند ، هم در روی تگ مورد نظر