Ceviz Forum

Geri Dön   Ceviz Forum > Programlama > Javascript / DHTML / Ajax

Cevapla
 
LinkBack Seçenekler
Eski 24/04/2007, 00:52   #1 (permalink)
Üye
 
Hazar Adlı Üyenin Profil Grafiği
 
Üyelik Tarihi: 04/2007
Mesaj: 15
Varsayılan Javascript replace sorusu

İlk soruma cevap gelmedi, basitleştirerek soruyorum.
Kod:
<script type="text/javascript"> 
function degistir()
{
degisecek = document.getElementById('nedir').innerHTML;
var intIndexOfMatch = degisecek.indexOf("proje");
while (intIndexOfMatch != -1)
    {
    // Relace out the current instance.
    degisecek = degisecek.replace("proje", "<b>proje</b>"+u)
     
    // Get the index of any next matching substring.
    intIndexOfMatch = degisecek.indexOf("proje");
    }
 
alert(degisecek);
}

</script>
dediğim an script sonsuz döngüye giriyor, IE kilitleniyor, Firefox 10 saniye sonra "betiği durdurayım mı" diyor. Nedeni basit, aslında amacım replace etmek değil, sağına soluna HTML tag'ları yerleştirmek. Ve sayfada tek bir terim için bu işlemi sadece 3 defa yapmak. Örnekte sayfada 150 defa proje yazıyorsa sadece ilk üçü için çalışsın gibi.

Nereyi atlıyorum, indexOf'un içinde bir pointer mı var ilerletmem gereken ki sürekli aynı sözcükte takılıp sonsuz döngüye girmesin?
Hazar hatta değil   Alıntı Yaparak Yanıtla
Eski 24/04/2007, 09:17   #2 (permalink)
Üye
 
Sniper Adlı Üyenin Profil Grafiği
 
Üyelik Tarihi: 06/2004
Yer: İstanbul
Mesaj: 2,264
Varsayılan

Nedeni çok açık değil mi? "proje" kelimesini "<b>proje</b>" ile değiştirmeye çalışıyorsun, kontrol kriteri olarak ta değiştirmek istediğin kısmın, metnin içinde olup olmadığını kontrol ediyorsun. Her iki kısımda da "proje" kelimesi geçtiğinden haliyle script taşma hatası verecektir.

Hem RegExp dururken basit bir replace olayı için tarayıcıyı bu kadar yormaya ve uzun işlem yapmaya zorlamak gereksiz. Kodlarını aşağıdaki gibi değiştirirsen metin içindeki tüm "proje" kelimeleri kalın olarak geri dönecektir.

Kod:
function degistir()
{
degisecek = document.getElementById('nedir').innerHTML;
degisecek = degisecek.replace(/proje/gi, "<b>proje</b>");
return(degisecek)
}
document.write(degistir())
__________________
tuncay.kinali.net
Sniper şu an hatta   Alıntı Yaparak Yanıtla
Eski 24/04/2007, 11:28   #3 (permalink)
Üye
 
Hazar Adlı Üyenin Profil Grafiği
 
Üyelik Tarihi: 04/2007
Mesaj: 15
Varsayılan

Sniper, teşekkür ederim. Dediğin gibi kullanınca çalışıyor.
Benim esas istediğim, bu değişimi sayfada mesela 3 kere yapsın.
/g enables "global" matching. When using the replace() method, specify this modifier to replace all matches, rather than only the first one.
Buradaki /g benim bu isteğimi engelliyor ve yine başa dönüyorum. g'yi kaldırsam yine eskisi gibi ilk rastladığı yerin üzerinde takılıyor, ötesine gitmiyor. Bunun ne gibi bir çözümü olabilir?.
Hazar hatta değil   Alıntı Yaparak Yanıtla
Eski 24/04/2007, 13:21   #4 (permalink)
Üye
 
Hazar Adlı Üyenin Profil Grafiği
 
Üyelik Tarihi: 04/2007
Mesaj: 15
Varsayılan

PHP karşılığı bu ve istediğim gibi çalışıyor. Ama client-side olması daha mantıklı.
Kod:
while ($satir = mysql_fetch_array($sorgu)) 
        {   // değişim array'ı dinamik olarak oluşuyor.
            $bunu[] = "/".$satir[0]."/"; //i yok, case sensitive olması lazım.
            $bunla[] = '<a href="nedir.php?baslik='. urlci($satir[0]) . '&id=' . $satir[1] . '" onMouseOver="nGoster(\''.urlci($satir[0]).'\'); return true;" onMouseOut="nGizle();" class="nedir">'.$satir[0].'</a>';
        }
$nedirize = preg_replace($bunu, $bunla, $degistir, 3);
Hazar hatta değil   Alıntı Yaparak Yanıtla
Cevapla

Bookmarks

Seçenekler

Mesaj Yazma Hakları
Yeni mesajgöndermezsiniz
Cevap yazamazsınız
Dosya ekleyemezsiniz
Mesajınızı düzenleyemezsiniz

BB code is Açık
[IMG] kodu Açık
HTML kodu Kapalı
Trackbacks are Açık
Pingbacks are Açık
Refbacks are Açık

Benzer Konular
Konu Konuyu açana göre Forum Cevap En Son Mesaj
ASP ş, ı, ğ replace paranoid ASP 2 05/04/2007 14:15
Javascript+Replace+<> tagları [] çevirme hakkında Acemi2007 Javascript / DHTML / Ajax 0 14/02/2007 19:50
Mysql Replace sorusu? pirilti Veritabanları & SQL 1 28/06/2006 13:12
replace ??? DotNetKid ASP 2 05/04/2004 01:04
replace Sahin PHP 15 18/05/2003 18:56


Forum saati Türkiye saatine göredir. GMT +3. Şu anda saat 16:07.

Reklamlar & Desteklenenler
Hassas Valf | Hassas Kaplama | Antalyamız | Gazete | Ticari Bilişim | Hakan Müştak | Rüya Tabirleri | Kadın | Hastalıklar | Cepte msn ve e-posta | Webmaster | Antalya Aupair | Turkish Property Antalya | Forum | Chat | Perde | Adsl | Araba | bolindir.com | guncelle.com | livescore | Web Tasarım | evden eve nakliyat | forum | evden eve | sohbet | Resimcim| Kalifiye İnsan Kaynakları | Web Tasarım | Oyun | Yusuf KOÇ | Akın Yorulmaz | şiir | UFO | Web Tasarım | Oyunlar | Canlı Tv |


Forum Yazılımı: vBulletin Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.2.0
Copyright ©2001 - 2008, Ceviz.net