2016-04-11 2 views
0

Я пытаюсь установить ширину элемента таблицы td с помощью javascript. При установке вне функции ширина устанавливается правильно. Когда один и тот же код инкапсулируется в функцию, ширина элемента td остается неизменной. Я вставил точки останова, и кажется, что код запущен. Спасибо за помощь.Установить td offSetWidth в функции

Это работает:

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

Это не:

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

Функция успешно вызывается из кода за

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

убедитесь, что у вас есть слово 'function' при объявлении вашей функции в javascript. 'function myfunction() {// code}' – IrkenInvader

+0

Хорошо, что у меня есть функция в моем фактическом коде, но я не включил ее в пример. Спасибо. – doctacular

+0

Это, кажется, проблема с областью, мне нужно передать элементы управления? – doctacular

ответ

0

Итак, вы получили JavaScript вызывается сервером , Большой вопрос: когда выполняется скрипт и когда исполнялся ваш оригинальный скрипт? Я предполагаю, что ваш старый скрипт был выполнен после загрузки страницы, поэтому все ссылки на элементы существовали, и все элементы были нарисованы браузером.

Ваш новый скрипт, вероятно, работает до того, как содержимое будет полностью загружено, то есть браузер не сможет найти ссылочный элемент, потому что он еще не загружен или ничего не было нарисовано, поэтому все элементы не имеют ширины.

+0

Вы правы, когда код вне функции запускается, когда страница загружается как она существует в разметке aspx, то есть: . Когда функция выполняется из события Page_load из последующего кода, я вижу, используя точки останова, что ширина gridview имеет правильные значения, однако значения td остаются неизменными. Может ли быть, что gridview отображается, но таблицы нет? Я также вижу значения для tds, но они не обновляются. – doctacular

0

Мне удалось заставить его работать, однако элемент TD немного шире элемента gridview. Я считаю, что это имеет какое-то отношение к заполнению:

function MyFunction(){ document.getElementById("myTd").width = document.getElementById('<%= ID=myGridview.ClientID %>').rows[0].cells[0].offsetWidth; }; 
Смежные вопросы