Javascript indexOf

#javascript

#javascript

Вопрос:

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

 <input type="hidden" id="Message" value="<%= rsDetail.Fields("Message") %>">
<input type="hidden" id="FirstName" value="<%= rsDetail.Fields("FirstName")%>">

<script type="text/javascript">
<!--
function NameCheck(){
var FirstName=document.getElementByID('FirstName');
var CardMessage=document.getElementByID('Message');
var aPosition = CardMessage.indexOf('FirstName');

if (aPosition == -1)
alert("Name Not In Message.");
}
-->
</script>

<a href="NextPage.asp" onClick="NameCheck();">Proceed</a>
  

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

1. document.getElementById() возвращает элемент, а не значение элемента. Чтобы получить значение элемента, вы можете сделать document.getElementById('someId').value .

Ответ №1:

Похоже, вы пытаетесь получить значение входных FirstName данных. getElementById() возвращает только сам узел. Вместо этого получите доступ к его значению:

 var FirstName = document.getElementById('FirstName').value;
var CardMessage = document.getElementById('Message').value;

// Then use the variable `FirstName` instead of the quoted string
var aPosition = CardMessage.indexOf(FirstName);

// Best practice would be to use === for strict type comarison here...
if (aPosition === -1)
  alert("Name Not In Message.");
}
  

Также обратите внимание, что вы написали с ошибкой getElementById , с заглавной D буквы в конце, где она должна быть в нижнем регистре.

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

1. Как бы мне изменить код, чтобы я получал параметр «да, нет» в предупреждении, где «да» позволяет пользователю прогрессировать, но не удерживает их на странице.

2. @Darren Cook вместо alert() того, чтобы использовать confirm() и возвращать его значение: return confirm('Name not in message');

Ответ №2:

Я думаю, это то, что вы пытаетесь.

 var FirstName=document.getElementById('FirstName').value;
var CardMessage=document.getElementById('Message').value;
var aPosition = CardMessage.indexOf( FirstName );
  

Ответ №3:

'FirstName' в кавычках указывается строка, а не переменная FirstName . Вам нужно:

 // remove the quote, pass the variable FirstName instead of string 'FirstName'
var aPosition = CardMessage.indexOf(FirstName);
  

РЕДАКТИРОВАТЬ: я пропустил две вещи раньше. Во-первых, вам нужно получить значение узла, а во-вторых, прописную букву D. Таким образом, правильный код:

 var FirstName = document.getElementById('FirstName').value;
var aPosition = CardMessage.indexOf(FirstName);
  

Ответ №4:

Лучший способ использовать jQuery. Ваш код мы можем сократить максимум до 2 строк:

 $("#click").click(function() {
    var found = $('#Message').val().indexOf($("#FirstName").val());
    console.log(found);
});
  

Ответ №5:

document.getElementByID должно быть document.getElementById

Ответ №6:

indexOf() Метод возвращает позицию первого вхождения указанного значения в строке. Этот метод возвращает -1 , если значение для поиска никогда не встречается. Примечание: indexOf() метод чувствителен к регистру.

Ответ №7:

Попробуйте :

 var FirstName=document.getElementByID('FirstName');
var aPosition = CardMessage.indexOf(FirstName);
  

В вашем примере вы ищете следующую строку FirstName , а не значение переменной FirstName