2013-11-08 2 views
0

У меня есть одна проблема с кодом javascript. Я знаю, как это сделать с помощью jQuery, но я должен использовать js для этого. Мне нужно, когда кто-то нажмите на первый DIV, чтобы поймать изображение «show.png» в первом ДИВ и изменить его с другимCatch img тег и изменение изображения

У меня есть HTML-код, как это (этот повтор пару раз с разными ID)

<div class="clickdown" onclick="return toggleMe('p_202')"> 
    <table> 
     <tr valign="top"> 
      <td width="20px"> 
       <img src="images/show.png" align="top" alt="" /> 
      </td> 
      <td> 
       <b>textttext</b>&nbsp;&nbsp;<img src="images/btn_New.png" alt="" /> 
      </td> 
     </tr> 
    </table> 
</div> 
<div id="p_202" class="clickdown_content" style="display: none;"> 
    <p> 
    texttexttexttexttexttexttext 
    </p> 
</div> 

и существует Javascript-код для расширения и коллапса второго div.

function toggleMe(a) { 
    var e = document.getElementById(a); 
    if (!e) return true; 
    if (e.style.display == "none") { 
     e.style.display = "block" 
    } else { 
     e.style.display = "none" 
    } 
    return true; 
} 

FYI Не говори мне «Этот код есть a..ul» - я это знаю, но у меня есть запрос только добавить, не изменять какие-либо.

Так что я не могу добавить ID и использовать это с getElementByID()

я попробовать что-то вроде этого, но которые не работают (здесь я прячусь изображение, чтобы посмотреть, делает ти работу)

function toggleMe(a) { 
    var ttable = document.getElementsByTagName("table").item(0); 
    var ttr = ttable.getElementsByTagName("tr").item(0); 
    var ttd = ttr.getElementsByTagName("td").item(0); 
    vari = ttd.getElementsByTagName("img").item(0); 
    if (i.src == "images/btn_New.png") { 
     i.style.display == "none" 
    } else { 
     i.style.display = "block" 
    }; 
    var e = document.getElementById(a); 
    if (!e) return true; 
    if (e.style.display == "none") { 
     e.style.display = "block" 
    } else { 
     e.style.display = "none" 
    } 
    return true; 
} 

резюме:

Я должен оставить старый код HTML и Javascript и добавить новый код JavaScript

+0

Похоже, что вы не нашли места на 'vari' – MattDiamant

ответ

0

Он работает:

function toggleMe(a) { 
    var ttable = document.getElementsByTagName("table").item(0); 
    var ttr = ttable.getElementsByTagName("tr").item(0); 
    var ttd = ttr.getElementsByTagName("td").item(0); 
    var i = ttd.getElementsByTagName("img").item(0); 
    if (i.src.indexOf("images/show.png") !== -1) { 
    i.style.display = "none"; 
    } else { 
    i.style.display = "block"; 
    } 

    var e = document.getElementById(a); 
    if (!e) return true; 
    if (e.style.display == "none") { 
    e.style.display = "block"; 
    } else { 
    e.style.display = "none"; 
    } 
    return true; 
} 

Вы должны использовать indexOf, потому что в атрибуте src у вас есть весь URL.

Plunker example

изображения вы можете легко изменить таким образом:

i.src = "images/newShow.png"; 
+0

Да, это работает, но если я включаю это на моем сайте, что дон Не работай. В элементе ispect я могу увидеть сообщение об ошибке: Uncaught TypeError: Невозможно правильно прочитать 'css' из null. Кстати, как я могу написать img.src == "picture.jpg", потому что i.src.indexOf ("images/show.png")! == -1 не завершает работу –

+0

Я вижу, что является проблемой. Проблема заключается в этой строке var ttable = document.getElementsByTagName ("table"). Item (0); Документ должен измениться с помощью sometnihk, потому что у меня много divs с этим js, и это должно работать над каждым. Я попытался с этим. но это не работает –

+0

Я думаю, что вы можете увидеть 'Uncaught TypeError: Невозможно прочитать свойство 'style' of null. Это означает, что 'document.getElementById (a);' null - проверьте, почему ?. Если вы пишете изображение, используйте только один равный символ 'i.src =" picture.jpg "', и вы можете проверить его, используя 'i.src.indexOf (" picture.jpg ")'. – lukpaw

Смежные вопросы