הרשם שאלות ותשובות רשימת חברים לוח שנה הודעות מהיום

חזור   הוסטס - פורום אחסון האתרים הגדול בישראל > עיצוב גראפי, תכנות על כל שפותיו וקידום ושיווק אתרים > פורום תיכנות

   
|!|

השב
 
כלים לאשכול תצורת הצגה
ישן 19-07-12, 17:13   # 1
trupix
חבר מתקדם
 
trupix's Avatar
 
מיני פרופיל
תאריך הצטרפות: Sep 2009
גיל: 33
הודעות: 391

trupix לא מחובר  

לשנות רקע של td בJavaScript

שלום,

יש לי טבלה כזו

PHP קוד:
<table>
    <
tbody>
        <
td>פריט 1</td>
        <
td>פריט 2</td>
        <
td>פריט 3</td>
        <
td>פריט 4</td>
    </
tbody>
</
table
אני רוצה להגיע למצב בו כאשר לוחצים על אחד הפריטים, הרקע שלו משתנה לאדום, והשאר מתאפסים.
העניין הוא כזה, עקב מגבלות מסוימות אני לא יכול להשתמש כאן בJQuery (תוך שניה אני כותב משהו כזה ), אלא רק בJS נטו.

בכל אחד מהtd שלי, הוספתי לאירוע onClick את הפונקציה doAction(); אבל אני מתקשה לכתוב פונקציה שתעשה זאת ביעילות ..

אודה מאוד לעוזרים!
__________________
Senior Product Designer & Envato Author
Frontend & Wordpress Developer


Dribbble | ThemeForest
  Reply With Quote
ישן 19-07-12, 17:18   # 2
DoLet
חבר בקהילה
 
מיני פרופיל
תאריך הצטרפות: Jul 2011
הודעות: 301

DoLet לא מחובר  

HTML קוד:
document.ID.style.background = "red";
או אפשרות יותר דינמית:

HTML קוד:
function changecolor(string) {
	document.string.style.background = 'red';
}

<tb onclick="changecolor(this)">
:S

Last edited by DoLet; 19-07-12 at 17:26..
  Reply With Quote
ישן 19-07-12, 17:23   # 3
trupix
חבר מתקדם
 
trupix's Avatar
 
מיני פרופיל
תאריך הצטרפות: Sep 2009
גיל: 33
הודעות: 391

trupix לא מחובר  

אם היה איידי הייתי עובר בלולאה על כולם =! האיידי, אולם זה לא המצב
__________________
Senior Product Designer & Envato Author
Frontend & Wordpress Developer


Dribbble | ThemeForest
  Reply With Quote
ישן 19-07-12, 17:26   # 4
DoLet
חבר בקהילה
 
מיני פרופיל
תאריך הצטרפות: Jul 2011
הודעות: 301

DoLet לא מחובר  

ציטוט:
נכתב במקור על ידי trupix צפה בהודעה
אם היה איידי הייתי עובר בלולאה על כולם =! האיידי, אולם זה לא המצב
כתבתי לך קוד חדש.. עם שימוש ב this

בטעות רשמתי tb ולא td ואין צורך בdocument שם טעות שלי.

Last edited by DoLet; 19-07-12 at 17:29..
  Reply With Quote
ישן 19-07-12, 17:32   # 5
trupix
חבר מתקדם
 
trupix's Avatar
 
מיני פרופיל
תאריך הצטרפות: Sep 2009
גיל: 33
הודעות: 391

trupix לא מחובר  

הגעתי לתוצאה זהה אבל בצורה מסורבלת יותר, כך שיש התקדמות.

שאלה - כשאני לוחץ על td, הרקע מהשתנה. כיצד הוא יודע למי לשנות? הרי אין שם ID..
כי נניח אני לוחץ על אחד מהם, אני צריך לעבור על כל השאר ולהחזיר להם את ערך הbackground למשהו אחר.
__________________
Senior Product Designer & Envato Author
Frontend & Wordpress Developer


Dribbble | ThemeForest
  Reply With Quote
ישן 19-07-12, 17:38   # 6
DoLet
חבר בקהילה
 
מיני פרופיל
תאריך הצטרפות: Jul 2011
הודעות: 301

DoLet לא מחובר  

ציטוט:
נכתב במקור על ידי trupix צפה בהודעה
הגעתי לתוצאה זהה אבל בצורה מסורבלת יותר, כך שיש התקדמות.

שאלה - כשאני לוחץ על td, הרקע מהשתנה. כיצד הוא יודע למי לשנות? הרי אין שם ID..
כי נניח אני לוחץ על אחד מהם, אני צריך לעבור על כל השאר ולהחזיר להם את ערך הbackground למשהו אחר.
במקרה הזה במקרה הזה this = לtd שהוא נמצא עליו.
תנסה להסתכל על getElementsByTagName ולנסות אולי להשתמש בו.
  Reply With Quote
ישן 21-07-12, 01:27   # 7
meshuga
הנהלת הפורום לשעבר
 
meshuga's Avatar
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
גיל: 34
הודעות: 7,601

meshuga לא מחובר  

קוד:
	function doIt(el){
		for(var i=0;i<el.parentNode.parentNode.getElementsByTagName("td").length;i++)
			el.parentNode.parentNode.getElementsByTagName("td")[i].style.background='';
		el.style.background='red';
	}
זה יעבוד על כל השורות בטבלה..כלומר, אם יהיה לך טבלה כזאת:
קוד:
<table>
	<tr>
	<td onclick="doIt(this);">Col. 1</td>
	<td onclick="doIt(this);">Col. 2</td>
	</tr>
	<tr>
	<td onclick="doIt(this);">Col. 1</td>
	<td onclick="doIt(this);">Col. 2</td>
	</tr>
</table>
אם תרצה להגביל את זה שזה יעבוד בכל שורה בנפרד אז תוריד parentNode אחד.

מעבר לקוד "קומפלט" שהבאתי לך...אני מצפה שתבדוק את הרכיבים כמו parentNode וgetElementsByTagName ולצאת קצת מה"בועה" של JQUERY/MOOTOOLS וכד'..
  Reply With Quote
ישן 21-07-12, 11:12   # 8
IgalSt
מנהל פורום, עסק רשום
 
IgalSt's Avatar
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
מיקום: המרכז
גיל: 37
הודעות: 1,432
Send a message via Skype™ to IgalSt

IgalSt לא מחובר  

ציטוט:
נכתב במקור על ידי meshuga צפה בהודעה
מעבר לקוד "קומפלט" שהבאתי לך...אני מצפה שתבדוק את הרכיבים כמו parentNode וgetElementsByTagName ולצאת קצת מה"בועה" של JQUERY/MOOTOOLS וכד'..

בנוסף querySelectorAll שאפשר להשתמש בו בסלקטורים, בדומה לאיך שעובדים עם jQuery.
החיסרון הוא שהוא לא נתמך בדפדפנים ישנים (IE7 ומטה)
  Reply With Quote
ישן 27-07-12, 15:28   # 9
AlmogBaku
חבר וותיק
 
AlmogBaku's Avatar
 
מיני פרופיל
תאריך הצטרפות: Nov 2007
מיקום: מודיעין
הודעות: 1,022

AlmogBaku לא מחובר  

PHP קוד:
var tds=document.getElementsByTagName("td");
for (
i=0;i<tds.length;i++) {
    
tds[i].onclick=function() {
        
console.log("event called!");
        
this.style.background="red";
    };

  Reply With Quote
ישן 27-07-12, 15:59   # 10
איציק ברבי
עסק רשום [?]
 
מיני פרופיל
תאריך הצטרפות: Feb 2011
הודעות: 970

איציק ברבי לא מחובר  

תקשר JQUERY -

PHP קוד:
$("table tbody td").click(function(){
    $(
this).css("background-color","red");
}); 
__________________

איציק ברבי - שירות לקוחות
כתובת אתר: http://build-net.co.il/
איימל: Support@build-net.co.il
טלפון: 052-3937296.
  Reply With Quote
השב

חברים פעילים הצופים באשכול זה: 1 (0 חברים ו- 1 אורחים)
 


חוקי פירסום
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is מופעל
סמיילים הם מופעל
[IMG] קוד מופעל
קוד HTML מכובה

קפיצה לפורום


כל הזמנים הם GMT +2. הזמן כעת הוא 06:32.

מופעל באמצעות VBulletin גרסה 3.8.6
כל הזכויות שמורות ©
כל הזכויות שמורות לסולל יבוא ורשתות (1997) בע"מ