2017-05-17 5 views
0

私は自分のウェブページが開くときにパスワードとあなたの名前を尋ねるようにこのJavascriptを作ろうとしています。あなたの名前を入力しなければ、あなたがするまで、そして入力された名前の最初の文字を大文字にします。しかし、それは最初の手紙を大文字にしません。助けてください。ありがとうございました。JavaScript .substr()と.slice()

function startFunction() { 
    var Password = prompt("What is the password?"); 
    getPassword(Password); 
}; 

function getPassword(Password) { 
    if (Password == "123") { 
    alert("Correct password. Access granted."); 
    var Name = prompt("What is your name?"); 
    getName(Name); 
    } 
    else { 
    alert("Incorrect password. Access denied."); 
    window.close(); 
    } 
}; 

function getName(Name) { 
    if (Name.length === 0) { 
    while (Name.length === 0) { 
    alert("Please enter your name."); 
    var Name = prompt("What is your name?"); 
    if (Name.length > 0) { 
     alert("Nice to meet you, " + Name + "."); 
     } 
    } 
    } 
    else { 
    try { 
     var newName2 = Name.slice(1, Number(name.length)); 
     var newName1 = Name.slice(0, 1); 
     var newName = newName1.toUpperCase() + newName2; 
     alert("Nice to meet you, " + newName + "."); 
    } 
    catch (ValueError) { 
     alert("Hello") 
    } 
    } 
}; 

startFunction(); 
+0

あなたのコードは、私はそれを入力したときに、私の名前の最初の文字を大文字に表示されます。あなたのコードが期待どおりに動作しないのですか?また、[**標準のJavaScript命名規則**](https://www.w3schools.com/js/js_conventions.asp)に従うことを忘れないでください。 –

+0

'if'ブロックで発生する" Nice to meet you ... "警告には、最初の文字を大文字にするコードがなく、' else'ブロックの警告だけが行います。ところで、このコードのtry/catchは必要ありません。 – nnnnnn

+0

ああありがとう。私はそれを最初の手紙を大文字にしてそれを残りの名前に加えるようにしようとしていました。 「クリス」を追加した場合と同様に、「クリス」に警告します。 – Neuranium

答えて

0

あなたのwhileループは、名前の最初の文字を大文字にするロジックが含まれていなかったので、名前を入力することで、あなたの最初の試みが空だった場合、その挨拶は大文字されません。

私はgetName()を少し単純化し、独自の機能に総額を移動:

function getName(Name) { 
    while (Name.length === 0) { 
    alert("Please enter your name."); 
    Name = prompt("What is your name?"); 
    } 

    try { 
    alert("Nice to meet you, " + capitalizeName(Name) + "."); 
    } 
    catch (ValueError) { 
    alert("Hello") 
    } 
}; 

function capitalizeName(Name) { 
    var newName2 = Name.slice(1, Number(name.length)); 
    var newName1 = Name.slice(0, 1); 
    var newName = newName1.toUpperCase() + newName2; 
    return newName; 
} 

と行動でそれのフィドル:https://jsfiddle.net/21mdLfrb/

+0

ありがとうございます、それは美しく動作します! – Neuranium

0

ここでuは

Htmlの行く:

<input type="text" id="name" ></input> 
<input type="password" id="pass" ></input> 
<button onclick="process()" > 
    Submit 
</button> 

Javascript:

function process(){ 
    var getName= document.getElementById("name").value; 
    var getPass= document.getElementById("pass").value; 

    if(getName && getPass){ 
     getName = getName.charAt(0).toUpperCase() + getName.slice(1); 
     alert("Nice to meet you, " + getName + "."); 

    } 
} 

https://jsfiddle.net/emilvr/hcb81vng/