#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