1

そのため、最初の入力を数値として、2 番目の入力を文字列として受け取る関数を作成しようとしています。次に、関数は div の innerHTML を 2 番目の入力の文字で変更する必要があります。例えば。最初の入力が 2 で、2 番目の入力が hello の場合、innerHTML は次のように変更する必要があります。

h
ee

最初の番号が 5 の場合、他のすべては同じです。

h
ee
lll
llll
ooooo

str.charAT とおそらく for ループ (おそらく任意のループ) を使用する必要があることはわかっていますが、頭の中でそれをつなぎ合わせることができないようです。私はこれで6時間立ち往生していますが、どうすればよいかわかりません。だからここで私は助けを求めていますXD、助けてください!何かヒントがあれば、喜んで受け入れます。これは、js に慣れるのに役立つランダムな演習です。あなたがむしろ全体を与えたいのであれば、私がそれから学ぶことができることを考えると、それはヒントよりもはるかに役立つことを意味します.

文字列内の文字数を超えることはできません。これまでに作成した html と javascript を以下に示します。

<html>
<head>
  <script src="q2.js" type="text/javascript"></script>
</head>
<body>
  <div> Input1<input id="input1" type="text"></div>
  <div> Input2<input id="input2" type="text"></div>
  <div> Result<div id="result"></div></div>
  <button onclick="compute()">Compute</button>
</body>
<html>

ジャバスクリプト:

function compute(){
  var n = Number(document.getElementById("input1").value);
  var v = document.getElementById("input2").value;
  var answer = document.getElementById("result");
  var i,j;
answer.innerHTML = "";
if(n){

}else{
  alert("whatever is in input 1 is not a number ya fookin cheeky buggah");
}
if(n>v.length){
  alert("number 1 bigger than word 2");
}

for(i=0;i<n;i++){
for(j=0;)
}

}
4

3 に答える 3

4

これは必要なことを行いますが、慣れていない配列関数を使用している可能性があります

function compute() {
    var n = Number(document.getElementById("input1").value);
    var v = document.getElementById("input2").value;
    var answer = document.getElementById("result");

    if (!n) {
        alert("whatever is in input 1 is not a number ya fookin cheeky buggah");
    }
    if (n > v.length) {
        alert("number 1 bigger than word 2");
    }
    answer.innerHTML = [].slice.call(v, 0, n).map(function(letter, index) {
        return new Array(index+2).join(letter);
    }).join('<br />');
}
  1. slice- 最初の n 文字だけが必要です
  2. map- 各キャラクターに対して、コールバック関数を実行します
  3. このcallback関数は、現在のインデックス (0 ベースのインデックス) よりも 2 大きい空の配列を作成します。
  4. この配列を文字で結合します-インデックス+ 1文字を生成します
  5. マップされた配列が結合されます<br />
  6. この結果はに出力されますanswer.innerHTML

answer.innerHTMLES2015 (ES6)のコードは次のようになります。

   answer.innerHTML = [].slice.call(v, 0, n).map((letter, index) => letter.repeat(index+1)).join('<br />')
于 2015-11-19T03:04:04.990 に答える
0
function compute() {
var n = Number(document.getElementById("input1").value);
var v = document.getElementById("input2").value;
var answer = document.getElementById("result");

if (!n) {
    alert("whatever is in input 1 is not a number ya fookin cheeky buggah");
}
if (n > v.length) {
    alert("number 1 bigger than word 2");
}
var res ="";
for(var i=1; i<=v.length; i++){
res = res +"\n"+ Array(i+1).join(v.charAt(i));
}
answer.innerHTML = res;
}

この回答が有用または有効または間違っていると思う人は誰でも、コメントを投稿するか、上下の矢印をクリックしてください。自分自身をさらに向上させるだけです。

于 2015-11-20T06:15:41.477 に答える