مثلاً لو لدي مستند css فيه التالي:
هل أستطيع تغيير محتواه؟كود HTML:p.flashingText { color:red; }
مثلاً لو لدي مستند css فيه التالي:
هل أستطيع تغيير محتواه؟كود HTML:p.flashingText { color:red; }
نعم تستطيع تغيير محتواه، لكن يجب ان تعرف إسم المعرف للوسم، فلو كان الوسم
اسم المعرف هنا هو WebDeveloperكود PHP:
<p class="flashingText" id="WebDeveloper">المحتوى</p>
من خلال الجافاسكريبت وبإعتماد تقنية dom سنغير المحتوى بهذا السطر
هناك طرق أخرى لكن هذه هي القياسيةكود PHP:
document.getElementById("WebDeveloper").style.color = "black";
ربما لم أوفق بتوضيح المسألة جيداً..
كنت أهدف لعمل تأثير فلاشنغ "وميض بالعربي على ما اعتقد يسمونه" من خلال المبادلة بين لونين على حسب الوقت وكتبته كالتالي:
والكود يشتغيل تمام، لكن حين أريد تطبيقه على لقب عضو في برنامج منتدى على سبيل المثال..كود PHP:
<script type="text/javascript">
var isCase=1;
function FlashingText()
{
var TargetText= document.getElementById("WebDeveloper")
if(isCase==1)
{
TargetText.style.color="white"
isCase=0;
t=200;
}
else
{
TargetText.style.color="red"
isCase=1;
t=200;
}
setTimeout("FlashingText()",t)
}
</script>
<p class="flashingText" id="WebDeveloper">المحتوى</p>
...
...
<script type="text/javascript">
FlashingText()
</script>
بحيث أجعل تأثير الفالشنغ ظاهر على لقب أعضاء معينين فإنه ستكون هناك مشكلة في حال أضاف العضو نفسه أكثر من مشاركة لموضوع ما والسبب إنه في كل مرة سيضاف فيها لقبه فإن نفس الـ id سوف يضاف من جديد وكما تعلم أستاذنا الكريم فإن ذلك غير صحيح لأن الآيدي يفترض أن يرتبط بعنصر واحد فقط ولذلك فالتأثير لا يعمل إلا على عنصر واحد.
فخيل إلي أنه لو أمكن تغيير محتوى العنصر في css نفسه كالتالي مثلا:
document.css.flashingText="color:red;"
لأمكننا تلافي تلك المشكلة، تقبى هذه فكرة مبرمج مبتدئ في عالم الجافاسكربت وربما لديكم أو لدى الأخوة المحترفين حلولاً بديلة.
وأشكر لك التعاطي مع الموضوع.
وأعانكم الله على إدارة هذا القسم وإنجاحه.
تحياتي
WebDeveloper
اولا غير الدالة setTimeout بالدالة الجديدة setIntervel
وسنعتمد على المقبظ document.getElementsByTagName للوصول الى وسوم الفقرات("p")
ومن خلال الدالة التكرارية (for) سنتحكم في جميع الوسوم التي لها التعريفة "WebDeveloper"
بهذا سنتحكم في جميع الوسوم التي لها تعريفة موحدة
الكود كاملا
لاحظ ان الكود سيغير الوان وسوم الفقرات التي لها المعلم "WebDeveloper"كود PHP:
<script type="text/javascript">
<!--
var timer = 1000; // 1000 = 1sec
window.onload = function(){
var wino = document.getElementsByTagName("p");
window.setInterval(function(){
for(var i=0; i<wino.length; i++){
if(wino[i].id == "WebDeveloper"){
if(wino[i].style.color == "red")
wino[i].style.color = "white";
else
wino[i].style.color = "red";
}
}
},timer);
}
//www.wino.ws * script@wino.ws
//-->
</script>
<p class="flashingText" id="WebDeveloper">WebDeveloper</p>
<p class="flashingText" id="wino">wino</p>
<p class="flashingText" id="WebDeveloper">WebDeveloper</p>
<p class="flashingText" id="WebDeveloper">WebDeveloper</p>
<p class="flashingText" id="wino">wino</p>
<p class="flashingText" id="WebDeveloper">WebDeveloper</p>
يستحسن انزاله من المرفقات
نعم يمكن ... بشكل عام جميع وسوم html تعتبر كائنات تستطيع الوصول الى خصائصها وتغير قيمها
يمكن الوصول الى انماط الصفحه من خلال هذه المصفوفه
ومن خلال هذه المصفوفه ستصل الى خصائص كل نمطكود:document.styleSheets;
ويهمنا هنا لتغيير خاصية في النمط الخاصية (ملخبط في المسميات) style والتى اعتدنا عليها في الوسوم الاخرىكود:document.styleSheets[0].cssRules
امل ان تكون الفكره وصلت ... اذا كنت مهتم بالجافا اسكربت ... فيجب عليك تركيب متصفح فايرفوكس مع تنزيل الملحق فايربق FireBugكود:document.styleSheets[0].cssRules[1].style.color="green";
من هنا http://www.joehewitt.com/software/firebug/
الذي سيجعل خبير جافاسكربت في دقائقامل ان يتبرع احدهم بشرحه هنا
![]()
__________________
ضيف الله العتيبي مبرمج حر و مهندس معتمد من زيند (ZCE)
الاتصال: daif@daif.net او جوال: 0556639884
الخدمات: تقديم استشارات برمجيه, تطوير بوابات/خدمات إلكترونيه للقطاع العام او الخاص .
شكراً لك أخي Zizwar الكود أدى المطلوب تماماً.
وشكراً لك أخي daif على الطريقة الأخرى وعلى البرنامج، وأنا بصدد تجربته فهو يبدو مفيداً جداً خصوصاً وأن الانترنت اكسبلورر لا يعطيك فكرة واضحة عن سبب أخطاء الجافاسكربت
تحياتي لكما