Изображение Скрыть и скрыть с помощью обработчика событий - PullRequest
0 голосов
/ 15 декабря 2011

Я работаю над веб-страницей, которая содержит список элементов и подэлементов для отображения. В элементе Div я настраиваю значения, изображение. Использование изображения показывает и скрывает опцию При нажатии запускается обработчик события. Этокажется, работает нормально с IE9, но не работает с другими браузерами (Fire Fox, Chrome и Safari).

<div id="Type_A Medicine" value="H" entity="Type A Medicine" onClick="showHide(this,'MIE_Type_A Medicine')"><img src='<%=request.getContextPath()%>/images/plus.gif'>Type A Medicine</div>

function showHide(ctrl,id)
{
    if (ctrl.value == "H")
    {
            ctrl.value = "S";
            ctrl.innerHTML = "<img src='<%=request.getContextPath()%>/images/minus.gif'>" +ctrl.getAttribute("entity");
            showBlock(id);
    }
    else if (ctrl.value == "S")
    {
        ctrl.value = "H";
        ctrl.innerHTML = "<img src='<%=request.getContextPath()%>/images/plus.gif'>" + ctrl.getAttribute("entity");
        hideBlock(id);
    }
}


function hideBlock(blockId)
{
    var str = "document.all." + blockId + ".style.display='none'";
    eval(str);
}

function showBlock(blockId)
{
    var str = "document.all." + blockId + ".style.display=''";
    eval(str);
}

Я все еще не могу понять разницу со списком браузеров.помощь ...

Спасибо

Ответы [ 3 ]

1 голос
/ 15 декабря 2011

Чтобы получить нестандартные атрибуты, вы должны использовать .getAttribute(), а не пытаться получить к ним доступ как к свойствам.

Так что ctrl.entity должно быть ctrl.getAttribute("entity") и таким же для других нестандартных атрибутов.Запустите этот пример в Chrome: http://jsfiddle.net/jfriend00/Lxna7/.

Кроме того, вы должны удалить пробел из значения идентификатора, так как он не является допустимым символом и делает идентификатор непригодным для использования во многих случаях (когда пробел является разделителем между идентификаторами).

1 голос
/ 15 декабря 2011

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

id="Type_A Medicine"

Кроме того, вы никогда не публикуете код для showBlock или hideBlock, где вы передаете идентификатор.что не так там без кода.

0 голосов
/ 15 декабря 2011

Попробуйте правильно закрыть теги изображений, чтобы увидеть, решит ли это проблему:

<img src="path/file.html" />
...