PDA

View Full Version : سوال: نوار اخبار - jquery horizontal ticker



crafcrab
چهارشنبه 06 آذر 1392, 16:46 عصر
سلام
میخواستم یه نوار اخبار بالای سایتم بزارم با php و jquery بدون استفاده از Marquee میخوام در هر لحظه فقط یک خبر نمایش داده بشه شیوه نمایش هم به این صورت هست که هر یک ثانیه 1 حرف 1حرف نمایش میده
مثل سایت زیر :
http://www.jquerynewsticker.com
مشکل سایت بالا پیچیدگی زیادشه و هم این که خبر های من فارسی هست و باید راست به چپ باشه

مثل این میخوام بسازم:
http://my.mihanwebhost.com
قسمت آیا میدانید بالا راست صفحه را ببینید


زمانی که اومدم کد نویسی کنم چند تا سوال برخوردم :

1- زمانی که در php خبرها رو از DB میگیرم همه رو یکجا echo کنم ؟
2- با jquery چطوری حروف رو تیکه تیکه نشون بدم ؟
3- اگه در php خبر ها رو یکجا بفرستم برای jquery (تا تعداد درخواست ها به سرور کم باشه فقط یک بار) چطوری باید یک خبر نمایش بدم وقتی برای چند ثانیه delay کرد تا کاربر بتونه کل خبر بخونه بره خبر بعدی رو نمایش بده

id1385
چهارشنبه 06 آذر 1392, 18:12 عصر
با سلام
شما ابتداً وقتی داری از سایتت خروجی میگیری خبرهاتم خروجی می گیری و می ریزی توی یک آرایه جاوا اسکریپت بعد از توی آرایه بخون.
موفق باشید

crafcrab
چهارشنبه 06 آذر 1392, 21:42 عصر
تشکر اما یه سوال
با این روش که شما میگید آرایه Java باشه وقتی ما تمام خبر ها رو یکجا echo کنیم چطوری درون آرایه جاوا بریزم؟

میشه یه شبهه کد php و ajax منظورتون رو بیان کنید

(میشه یه آرایه php با تعداد خانه های اون رو با متد post در ajax فرستاد به آرایه java ؟)

id1385
یک شنبه 10 آذر 1392, 21:11 عصر
با سلام اینم نمونه
به دلخواه می تونید تغییر بدید کدهاش کار خاصی نداره



استفاده :


<style>
*{direction : rtl;font-family:tahoma;}
</style>


<script>
// in ghesmat ba php az data bass por shavad
var array = new Array();
array[0]='هرگز کسی که استعداد خوبی در تایپ کردن دارد پروفسور نخواهد شد!!! . لوسی اسمیت';
array[1]='زندگی آنقدر کوتاه است که بعضی ها فقط میرسند کارهای ضروری خود راانجام دهند!!! . فرد هند فاین';
array[2]='بدي را با عدالت پاسخ دهيد، مهرباني را با مهرباني . كنفوسيوس';
</script>


<!-- jayi ke khabar be nemayesh dar miayad -->
<div id="theTicker"></div>


<!-- file js ticker -->
<script src="ticker.js"></script>



فایل پیوستی :

function GetRnd(range) {
if (Math.random)
return Math.round(Math.random() * (range-1));
else {
var now = new Date();
return (now.getTime() / 1000) % range; }
}

var theSummaries = new Array();
var theSiteLinks = new Array();

for (var i=0 ; i<=5; i++){
theSummaries[i] = array[GetRnd(array.length-1)];
theSiteLinks[i] = 'javascript:';
}

var theCharacterTimeout = 90;
var theStoryTimeout = 5000;
var theWidgetOne = "_";
var theWidgetTwo = "-";
var theWidgetNone = "";
var theItemCount = theSummaries.length;






var NS6=(document.getElementById && !document.all) ? true : false;


function startTicker(){
theCurrentStory = -1;
theCurrentLength = 0;
if (document.getElementById){
runTheTicker();
}
else{
document.write("");
return true;
}
}





function runTheTicker(){
var myTimeout;
if(theCurrentLength == 0){
theCurrentStory++;
theCurrentStory = theCurrentStory % theItemCount;
theStorySummary = theSummaries[theCurrentStory];
theTargetLink = theSiteLinks[theCurrentStory];
}

var textTitle = theStorySummary.substring(0,theCurrentLength) + whatWidget();

if (theTargetLink ){
if (NS6){

document.getElementById("theTicker").innerHTML = textTitle;
}
else{
document.all.theTicker.innerHTML = textTitle;
}
}
else {
if (NS6){
document.getElementById("theTicker").innerHTML = textTitle;
}
else{
document.all.theTicker.innerHTML = textTitle;

}
}
if(theCurrentLength != theStorySummary.length){
theCurrentLength++;
myTimeout = theCharacterTimeout;
}
else{
theCurrentLength = 0;
myTimeout = theStoryTimeout;
}
setTimeout("runTheTicker()", myTimeout);
}
function whatWidget(){
if(theCurrentLength == theStorySummary.length){
return theWidgetNone;
}
if((theCurrentLength % 2) == 1){
return theWidgetOne;
}
else{
return theWidgetTwo;
}
}
startTicker();




موفق باشید