2016-06-13 3 views
-2

У меня есть функция, называемая hideButtons, что я хочу скрыть кнопки, если в абзаце присутствует определенный текст. Параграф проходит через список имен, которые пользователю нравятся или не нравятся, а затем, когда имен больше нет, кнопки исчезают.Функция JavaScript, чтобы скрыть кнопки, если отображается определенный текст

Очевидно, что это Судо на данный момент:

function hideButtons(){ 
     if namespace.indexOf("Out of people"){ 
     #likeButton = hidden; 
     #dislikeButton = hidden; 
     } 
    } 

Это рабочая функция

function showName(){ 
     var name = names[0]; 
     if (!name){ 
     name = 'Out of people'; 
     } 
     console.log(names) 
     document.getElementById('namespace').innerHTML = name; 
    } 

И HTML:

<body> 
    <p id='namespace'> Namelist </p> 
    <button id="likebutton" type="button">Like</button> 
    <button id="dislikebutton" type="button">Dislike</button> 

    </body> 
+3

Что именно вы спрашиваете? Где вы застряли? Вы спрашиваете, как построить блок 'if'? Как найти элемент на странице? Как проверить, содержит ли строка заданную подстроку? Как изменить стиль элемента? Что-то другое? – David

+1

Что вы подразумеваете под «это sudo на данный момент»? –

+2

@HopefulLlama: Я думаю, что он/она имел в виду «псевдо» – David

ответ

1

Вы вроде смешиваясь JavaScript и JQuery.

В JavaScript, чтобы получить значение тега p:

var ns = document.getElementById('namespace').innerHTML; 

то же самое в JQuery:

var ns = $('#namespace').text(); 

JQuery использует CSS селекторы для идентификации элементов, JavaScript не.

Вот полуработающая версия вашего кода.

var lb = document.getElementById('likebutton'); 
 
lb.addEventListener('click', hideButtons, false); 
 
var db = document.getElementById('dislikebutton'); 
 
db.addEventListener('click', hideButtons, false); 
 

 
function hideButtons(){ 
 
    var ns = document.getElementById('namespace').innerHTML; 
 
    alert(ns); 
 
    if (ns.indexOf("Namelist") > -1){ 
 
    lb.style.display = 'none'; 
 
    db.style.display = 'none'; 
 
    } 
 
} 
 
function showName(){ 
 
    var name = names[0]; 
 
    if (!name){ 
 
    name = 'Out of people'; 
 
    } 
 
    console.log(names) 
 
    document.getElementById('namespace').innerHTML = name; 
 
}
<body> 
 
    <p id='namespace'>Namelist</p> 
 

 
    <button id="likebutton" type="button">Like</button> 
 
    <button id="dislikebutton" type="button">Dislike</button> 
 

 
</body>


Вот тот же код в JQuery:

$('#likebutton, #dislikebutton').click(function(){ 
 
    var ns = $('#namespace').text(); 
 
    if (ns.indexOf('Namelist') > -1){ 
 
     $('#likebutton').hide(); 
 
     $('#dislikebutton').hide(); 
 
    }else{ 
 
     alert('P tag does not contain the word namespace'); 
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<body> 
 
    <p id='namespace'>Namelist</p> 
 

 
    <button id="likebutton" type="button">Like</button> 
 
    <button id="dislikebutton" type="button">Dislike</button> 
 

 
</body>

+0

, чтобы получить текст в абзаце, в котором вы используете текст(), а не val(), что последнее сильно зависит от входов. –

+1

также, я не вижу, как он смешивает jquery там, но js действительно имеет методы для использования селекторов css, таких как 'querySelector()' –

+0

Спасибо, что выбрали '.val()' vs' .text() 'typo - вы заметите, что я использовал правильный метод в« версии jQuery »внизу. – gibberish

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