Firefox / IE IIS 6 не поддерживает скрытие ярлыков в Javascript / HTML

#javascript #dhtml

#javascript #dhtml

Вопрос:

У меня есть некоторый код, который работает на моем блоке разработки IIS 5.1, но не на нашем рабочем сервере IIS 6 ИЛИ в Firefox. Я надеюсь найти какой-нибудь код, который будет соответствовать как нашему производственному серверу, так и Firefox.

Вот что происходит:

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

              <label for="lbCloseDate" id="lbCloseDate" style="display:none">
          <tr>
            <td bordercolor="#f0f0e4" bgcolor="#f0f0e4"><h3>Close Date</h3></td>
          </tr>
          </label>
 

Затем я использую этот javascript для отображения его на основе значения поля со списком:

     function statusShowHide()
{
    var cboStatus = document.getElementById('cboStatus');
    var lbCloseDate = document.getElementById('lbCloseDate'); 

    if cboStatus = 'Closed') 
    {
        lbCloseDate.style.display = "";
    }
}
 

По сути, то, что происходит в Firefox и нашем prod-сервере, заключается в том, что метка / строка не скрывается. У меня нет ошибки; он просто не скрывается, как я хочу.

Мне не нужно использовать ярлык, чтобы скрыть row…it просто это единственный известный мне способ. Итак, если что-то более предпочтительно для достижения той же цели, я открыт для этого. Спасибо!

Ответ №1:

у вас отсутствует a (здесь также == для сравнения, single = для присвоения.

 if (cboStatus == 'Closed') 
    {
        lbCloseDate.style.display = "";
    }
 

попадает ли это в этот блок? если это так, я бы рекомендовал изменить .display = «»; на .display = «нет»

вы также можете просто присвоить своему tr идентификатор и использовать его для скрытия / отображения строки вместо метки. будет более синтаксически корректным.

Редактировать:

Вот пример скрипки с рабочим примером: http://jsfiddle.net/2FDPg /

Вот основы:

 function showOrHideRow(){
    var theRow = document.getElementById('closeRow');
    var theDropDown = document.getElementById('ChangeMe');

    var theVal = theDropDown.options[theDropDown.selectedIndex].value;

    if(theVal == 'Closed'){
         theRow.style.display = 'none';   
    }
    else{
        theRow.style.display = 'block';
    }

}
 

и html:

 <table>
    <tr id="closeRow">

        <td>Close Date:</td>  
    </tr>
    <tr>
        <td>another row</td>
    </tr>

</table>

<select id="ChangeMe" onChange="showOrHideRow()">
    <option value="">Change me</option>
    <option value="Closed">Hide It</option>
    <option value="Open">Don't Hide It</option>
</select>
 

Комментарии:

1. К сожалению, все еще не работает. Кроме того, использование «» должно сделать ярлык видимым, не так ли? Он не предназначен для отображения «none» — пустая строка по сути такая же, как «block», как я думал, и более совместима с Firefox …. если я не ошибаюсь?

2. о, я думал, у вас возникли проблемы с его скрытием, а не с его отображением! какую версию firefox вы используете?