2016-04-11 13 views
0

javascript kullanarak tablo td öğesinin genişliğini ayarlamaya çalışıyorum. Bir işlevin dışında ayarlandığında, genişlik doğru şekilde ayarlanır. Aynı kod bir işlevde kapsülleyken, td öğesinin genişliği değişmeden kalır. Kesme noktaları ekledim ve kodun işlendiği anlaşılıyor. Yardımın için teşekkürler.Bir işlevdeki td offSetWidth değerini

Bu çalışır:

document.getElementById("myTD").offsetWidth = document.getElementById('<%= ID=myGridView.ClientID %>').rows[0].cells[0].offsetWidth; 

Bu değildir:

function myfunction() { document.getElementById("myTD").offsetWidth = document.getElementById('<%= ID=myGridView.ClientID %>').rows[0].cells[0].offsetWidth; }; 

işlevi başarıyla sunucu tarafından çağrılan

protected void Page_Load(object sender, EventArgs e) 
    { 
     ScriptManager.RegisterStartupScript(this.Page, this.GetType(), 
       "myfunction", 
       "myfunction();", 
       true); 
    } 
+0

javascript'te işlevinizi bildirirken "function" kelimesine sahip olduğunuzdan emin olun. 'işlev işlevi() {// code}' – IrkenInvader

+0

İyi yakalama, gerçek kodumda işlevim var ancak örnekte yer almadım. Teşekkür ederim. – doctacular

+0

Bu bir kapsam sorunu gibi görünüyor, kontrollere geçmek zorunda mıyım? – doctacular

cevap

0

Yani var javascript arkasında kodundan denir . Büyük soru, betiğin ne zaman yürütüldüğü ve orijinal betiğinizin ne zaman yürütüldüğü? Tahminim, eski komut dosyanız sayfanın yüklenmesinden sonra çalıştırıldığından, referans verilen tüm öğeler mevcuttu ve tüm öğeler tarayıcı tarafından boyanmıştı.

Yeni komut dosyanız, içerik tam olarak yüklenmeden önce çalışır; yani tarayıcı, henüz yüklenmemiş olduğu için başvurulan bir öğeyi bulamamaktadır, aksi halde tüm öğelerin genişliğinin olmaması için hiçbir şey boyanmamıştır.

+0

Sayfanın aspx işaretlemesinde olduğu gibi yüklendiğinde, işlevin dışına çıktığında kodu düzeltirsiniz: . Fonksiyon, arka koddan Page_load Event'den yürütüldüğünde, gridview genişliklerinin doğru değerlere sahip olduğu kırılma noktalarını kullanarak görebiliyorum, ancak td değerleri değişmeden kalır. Izgara görünümü işlenmiş olabilir, ancak tablo değil mi? Tds için de değerler görebiliyorum ama güncellenmiyorlar. – doctacular

0

Bunu yapabildim, ancak TD elemanı gridview öğesinden biraz daha geniş. Bunun filigran ile ilgili bir şeyleri olduğuna inanıyorum:

function MyFunction(){ document.getElementById("myTd").width = document.getElementById('<%= ID=myGridview.ClientID %>').rows[0].cells[0].offsetWidth; }; 
İlgili konular