PDA

View Full Version : بدست آوردن طول یک جدول (یا یک تی دی) بدون مقدار دهی قبلی



tabib_m
جمعه 04 فروردین 1385, 14:07 عصر
با سلام
چجوری میشه طول یک تیبل مثل تیبل زیر رو بدست آورد؟


<table>
<tr>
<td>
Hello, My name is Mohsen, What is your Name?
</td>
</tr>
</table>

alirezador
جمعه 04 فروردین 1385, 14:38 عصر
این مسئله ای که من یک مدت درگیر این بودم ولی در این حالی نسبت به کاراکتر های موجود باید حساب کنی اگه راه بهتری گیر آوردی به من هم بگو

pooyanm
جمعه 11 فروردین 1385, 20:47 عصر
سلام،
بدست آوردن طول این Element به سادگی امکان پذیر است


<table id=mytable>
<tr>
<td>
Hello, My name is Mohsen, What is your Name?
</td>
</tr>
</table>
<script>
alert('>>content: \n' +

document.getElementById('mytable').outerHTML + '\n\n>>length: '

+ document.getElementById('mytable').outerHTML.lengt h);
</script>

tabib_m
شنبه 12 فروردین 1385, 14:28 عصر
بدست آوردن طول این Element به سادگی امکان پذیر است

من طول هیچ رشته ای رو نمیخوام. (البته این طور که من متوجه شدم این کد چیزی غیر از طول یک رشته رو بر نمیگردونه!)
من طول تیبل با واحد پیکسل رو میخوام.

alirezador
شنبه 12 فروردین 1385, 15:07 عصر
آقا جان این هم همون کار را میکنه سعی کن یک بار هم که شده با دقت امتحان کنی

tabib_m
شنبه 12 فروردین 1385, 15:45 عصر
آقا جان این هم همون کار را میکنه سعی کن یک بار هم که شده با دقت امتحان کنی
:)
بابا ایولله.
دمت گرم.
تو چجوری تستش کردی؟
من فونت خط مورد نظر رو هم بیشتر (خیلی بیشتر) کردم، ولی نتیجه همون بود :)
این کد ، فقط تعداد کاراکتر های تیبل رو بر میگردونه یعنی تعداد کاراکتر های این عبارت رو :


<table id=mytable>
<tr>
<td>
Hello, My name is Mohsen, What is your Name?
</td>
</tr>
</table>

البته نمیدونم که چرا یک تگ <tbody> (و </tbody> )رو اضافه میکنه!

alirezador
شنبه 12 فروردین 1385, 16:45 عصر
جان من من تست کردم برای این

<table id=mytable>
<tr>
<td>
Hello, My name is Mohsen, What is your Name?
</td>
</tr>
</table>
میده 110 یعنی 110 px

برای این هم میده

<table id=mytable>
<tr>
<td>
Hello, My name is Mohsen, Whadfgfdgfdgfdgfdg fdg fd gfd g dsg t is your Name?
</td>
</tr>
</table>
<script>
alert('>>content: \n' +

document.getElementById('mytable').outerHTML + '\n\n>>length: '

+ document.getElementById('mytable').outerHTML.lengt h);
</script>

143 px

برای این هم میده ( مال فونت هستش)

<table id=mytable>
<tr>
<td><font size=10>
Hello, My name is Mohsen, Whadfgfdgfdgfdgfdg fdg fd gfd g dsg t is your Name?</font>
</td>
</tr>
</table>
<script>
alert('>>content: \n' +

document.getElementById('mytable').outerHTML + '\n\n>>length: '

+ document.getElementById('mytable').outerHTML.lengt h);
</script>

164 px

این دوستمون خیلی لطف کردن مشکل من یکی که خیلی حل شد
به خدا اگه سعی کنی مطالب را خیلی بهتر درک خواهی کرد موفق باشی

alirezador
شنبه 12 فروردین 1385, 17:16 عصر
سلام
آقا ببخشید اشتباه کردم این کلا غلط برمیگردونه

tabib_m
شنبه 12 فروردین 1385, 18:02 عصر
آقا ببخشید اشتباه کردم این کلا غلط برمیگردونه
این غلط بر نمیگردونه! بلکه همونطور که گفتم تعداد کاراکتر رو بر میگردونه.
این تفاوت هایی هم که توی مثالهاتون دیدید ، به خاطر کد هایی هست که اضافه کردید.

به هر حال ، نمیخوام این مسئله به جاهای دیگه کشیده بشه. از دوستان دیگه تقاضا دارم ، اگه راه حلی دارن لطفا بگن. و اگر هم میدونید که نمیشه ، لطفا بگید که من خیلی روش گیر ندم.

alirezador
شنبه 12 فروردین 1385, 18:13 عصر
من خودم خیلی این مسئله برام حیاتی هستش
راستی اگر از % هم استفاده بشه بازم مشکله در کل واسه هر دو مورد باید دنبال جواب بگردیم

pooyanm
یک شنبه 13 فروردین 1385, 02:18 صبح
سلام
سوال کوتاه شما من رو به اشتباه انداخت هر کدام از td ها ، th ها و span ها و... ممکنه نوع font و size جدا داشته باشند و اگر تعیین نشن مقدار پیش فرض مرورگر که همه جا هم یکی نیست در نظرگرفته میشه. کد:

<font face=arial size=5>text</font>همه جا یک اندازه نیست. و اگر اشتباه نکنم تنها font-size:Npx; همه جا یک اندازه است که اگر در Tools/Accessibilityغیر فعال بشه دیگه فایده ای نداره. از همه این ها گذشته font-size:Npx; ارتفاع رو تعیین می کنه نه طول را! من بدون برنامه سرور روشی براش ندارم (به زبان جاوا با 4-5 آبجکت) :

int pixel = java.awt.FontMetrics(new java.awt.Font("Arial", BOLD, 20)).stringWidth("abcdef");
این رو برای تنظیم MenuItem لازم داری یا چیزی دیگه ؟

pooyanc@yahoo.com

tabib_m
یک شنبه 13 فروردین 1385, 02:33 صبح
این رو برای تنظیم MenuItem لازم داری یا چیزی دیگه ؟

یه چیز جالب ، من اصلا نمیدونم MenuItem چی هست. :)
من در حقیقت میخوام یک تیبل رو در چند صفحه به نمایش بذارم، اونوقت میخوام وقتی صفحه ی اول باز شد، طول تیبل مورد نظر رو بدست بیارم، و برای صفحات بعدی از همون طول استفاده کنم.

pooyanm
یک شنبه 13 فروردین 1385, 02:51 صبح
شاید حداکثر چیزی که به شما کمک کنه resoltion صفحه باشه یک تکه از کد رو بفرست تا معلوم بشه بهترین راه چیه.

tabib_m
یک شنبه 13 فروردین 1385, 17:53 عصر
یک تکه از کد رو بفرست تا معلوم بشه بهترین راه چیه
کد، کد PHPه .
مقادیر از یک تیبل از دیتابیس گرفته میشه، و نمایش داده میشه، به صورت صفحه به صفحه .
من میخوام همون طولی که برای صفحه ی اول بدست میاد رو بدست بیارم، و بعد برای صفحات بعدی هم از همون طول استفاده کنم.
یعنی میخوام وقتی کاربر زد ، صفحه ی بعد ، طول جدول هیچ تغییری نکنه.
اگه میخواید ، کد کامل برنامه رو هم آپلود میکنم.

alirezador
یک شنبه 13 فروردین 1385, 17:56 عصر
این مسئله به دسا آوردن طول واسه من خیلی محم هستش اگه میشه رو این مورد یک مقدار دیگه هم کار کنیم

pooyanm
سه شنبه 15 فروردین 1385, 01:30 صبح
سلام، من تاحالا php کار نکردم اگه چیزی توی html یا js اون هست بفرست همین جا یا ایمیلم. راستش من هم موافقم که این مشکل همش داره پیچیده تر می شه تا اینکه حل بشه.

alirezador
سه شنبه 15 فروردین 1385, 14:27 عصر
با php با استفاده از درصد میتونستم طول را محاسبه کنم ولی وقتی width نباشه خیلی مشکله میشه با استفاده از شمردن تعداد کاراکتر ها ولی اگه عکس باشه چی

pooyanm
پنج شنبه 24 فروردین 1385, 06:00 صبح
سلام، آقای طبیب زاده ببینم هنوز به نتیجه نرسیدی؟ ببین فرض کن طول جدول در مرورگر من 100 است. حالا چه دلیلی داره که مقدار 100 را به width بدی یعنی همون عددی که خود به خود هم قرار گرفته و اون رو به من برگردونی و هیچ تفاوتی هم در طول جدول بوجود نمیاد. اگر چیزی بجز این بخوای باید دقیقا مشخص کنی. و این رو همه می دونیم که هر کاری ممکنه در صورتی که نیاز به اون برای افراد دیگه هم پیش آمده باشه. البته آقای دوراندیشیان هم این را لازم دارند پس اگه میشه به من بگید چطور میشه که من در صفحه بعدی همون جدول قبلی رو با یک طول دیگه ببینم!!! متاسفم حداکثر چیزی که از پست های قبلی بدست می آمد همین ها بود.

tabib_m
پنج شنبه 24 فروردین 1385, 12:03 عصر
فرض کنید جدولی که من دارم نمایش میدم ، جدول نام و نام خانوادگی باشه
طبعا در این صورت ممکنه نام هایی مثل نام های زیر در جدول وجود داشته باشه:

سید محمد علی ، طباطبایی شیرازی

اگه ما توی صفحه ی اول یک همچین اسمی نداشته باشیم ، طبعا طول جدول در صفحه ی دوم ، که دارای این اسم هست ، بیشتر از طول صفحه ی اول خواهد بود.

بنابراین جداول در صفحات مختلف طول های مختلفی خواهند داشت.
از طرفی هم من میخوام طول همه ی جداول به اندازه ی صفحه ای باشه که جدول بیشترین طول رو داره.
مثلا اگه در صفحه ی هفتم اسمی وجود داشته باشه که باعث بشه طول جدول 300 بشه، من میخوام تمامی جداول (در صفحات مختلف) طول 300 داشته باشن.

البته من قبل از این که صفحه ی اول رو نمایش بدم ، نیاز به تست تمامی مقادیر دارم، یعنی اول تست میکنم ، تا بفهمم بیشترین مقداری که جدول به خودش میگیره چنده.

بعد از همون اول ، مقدار رو به صورت دستی به همه ی جداول میدم.

امیدوام منظورم رو فهمیده باشید.

pooyanm
پنج شنبه 24 فروردین 1385, 12:13 عصر
سلام بله کاملا مشخص شد فقط یک سوال دارم آیا در تعریف جدول از nowrap استفاده کنی مشکل حل نمی شه؟

pooyanm
پنج شنبه 24 فروردین 1385, 12:15 عصر
البته عذر می خوام این سوال اشتباه است و شاید یک تکه کد برایتان پیدا کنم.

alirezador
پنج شنبه 24 فروردین 1385, 17:04 عصر
آقای پویان این مسئله واسه من خیلی محم هستش این مورد را من در یک پروژه دیگه ای نیاز دارم ولی اگه سوال آقای طبیب زاده حل بشه مشکل من هم حل میشه

pooyanm
شنبه 26 فروردین 1385, 17:17 عصر
سلام این کد از هر روشی دقیق تره. دقت کنید که طول هر ستون یا سلول با سلول زیر آن برابره. و همین طور ارتفاع td های یک سطر.

<table id=table>
<tr><td id=td1>row1column1</td><td id=td2>row2column###2</td><tr>
<tr><td id=td3>row2column1</td><td id=td4>row2column2</td><tr>
</table>
<script>
alert('1:' + td1.clientWidth + ', ' + td1.clientHeight +
'\n2:' + td2.clientWidth + ', ' + td2.clientHeight +
'\n3:' + td3.clientWidth + ', ' + td3.clientHeight +
'\n4:' + td4.clientWidth + ', ' + td4.clientHeight +
'\ntable:>' + table.clientWidth + ', ' + table.clientHeight);
</script>

pooyanm
شنبه 26 فروردین 1385, 17:22 عصر
امیدوارم که با این کد مشکل کاملا حل بشه

alirezador
شنبه 26 فروردین 1385, 21:00 عصر
آقا پویان خیلی خوب بود من امتحان کردم خوب جواب داد
خیلی ممنون از زحمتی که کشیدین

tabib_m
یک شنبه 27 فروردین 1385, 02:41 صبح
واقعا ممنونم
این دقیقا همون چیزی بود که من میخواستم
خیلی ممنون.

pooyanm
یک شنبه 27 فروردین 1385, 06:13 صبح
خوشبختانه مشکل حل شد.موفق باشید

pooyanm
یک شنبه 27 فروردین 1385, 06:24 صبح
من در مورد php چیزی نمی دونم و فقط از زبان Java یک نمونه در پست های قبلی مثال زدم کسی روش این کار را در php می دونه؟ احتمالا اکثر کاربران این قسمت با php کار می کنند و به اون نیاز دارند.

pooyanm
یک شنبه 27 فروردین 1385, 06:30 صبح
روش جاوا همون طور که گفته بودم به این شکله:



int pixel = java.awt.FontMetrics(new java.awt.Font("Arial", BOLD, 20)).stringWidth("abcdef");


نمی دونم php کتابخانه گرافیکی اش به چه شکله.

alirezador
یک شنبه 27 فروردین 1385, 10:30 صبح
اگه با php هم بشه خیلی خوب میشه