когда пользователь вводит значение в textarea, я хочу сгладить символ и показать его в текстовом поле, но я получаю сообщение об ошибке: TypeError: document.template is undefined
мой код:
<script>
function updateCharsLeft()
{
var counter, smsAmount; //, charLeft;
nValue = document.template.value.charCodeAt(o);
counter = document.template.value.length;
if(nValue<128){
if(counter == 0) {
smsAmount = 0;
}
else if(counter > 160) {
smsAmount = 1 + Math.ceil((counter -160)/152);
}
else {
smsAmount = 1;
}
}else
{
if(counter == 0) {
smsAmount = 0;
}
else if(counter > 70) {
smsAmount = 1 + Math.ceil((counter -70)/63);
}
else {
smsAmount = 1;
}
}
document.intCharLeft.value = counter;
document.SMSchain.value = smsAmount;
if(counter < 121){
//document.smsmobile.intCharLeft.style.color='#000000';
//document.smsmobile.intCharLeft.style.backgroundColor='#00FF00';
}
else if (counter >= 121 && counter <= 160) {
//document.smsmobile.intCharLeft.style.color='#000000';
//document.smsmobile.intCharLeft.style.backgroundColor='#00FF00';
}
if(counter > 160){
//document.smsmobile.intCharLeft.style.color='#000000';
//document.smsmobile.intCharLeft.style.backgroundColor='#FFFF44';
}
//if(counter > 885)
//{
//{ document.smsForm.txtMsg.value = document.smsForm.txtMsg.value.substring(0, 885);}
}
</script>
Html:
<div class="controls">
<textarea onKeyUp="updateCharsLeft()" name="template" id="template" rows="5" class="input-block-level"> </textarea>
<button type="submit" class="addtemplate">Save Template</button>
</div>
<div class="control-group">
<label for="textfield" class="control-label">No. of characters</label>
<div class="controls">
<input type="text" style="margin:0px;width:91px" name="intCharLeft" id="intCharLeft" placeholder="Text input" class="input-xlarge">
</div>
</div>
<div class="control-group" style="margin:0px">
<label for="textfield" class="control-label">No. of messages</label>
<div class="controls">
<input type="text" style="margin:0px;width:91px" name="SMSchain" id="SMSchain" placeholder="Text input" class="input-xlarge">
</div>
</div>
может ли кто-нибудь помочь мне решить эту проблему?
Автоматические переменные, создаваемые браузерами на основе id
элемента, являются свойствами window
(и, следовательно, являются глобальными переменными), а не document
, поэтому вы должны использовать только template
(или window.template
если хотите немного избыточно, но, возможно, немного яснее) не document.template
.
Но полагаться на эти переменные не является лучшей практикой, потому что они могут быть затенены другими вещами, которые также сбрасываются в window
. Вместо этого используйте document.getElementById("template")
, который смотрит только на значения id
(на неровных браузерах, IE6/7 сломан).
Вы должны использовать getElementById
вместо document.ElementName
:
var template = document.getElementById('template');
o
? Вы использовали его, как переменную, но он не определен нигде в вашем коде. Возможно, вы имели в виду0
, цифра? (Это даст вам код символа первого символа в значении.) В любом случае это отдельная проблема от проблемыdocument.template
.