-1

ユーザー入力配列を呼び出そうとしています。

私はJavascriptを初めて使用しますが、どういうわけか配列を参照する必要があることを知っています(???を置く場所にあります)。

<script> 
var arrayX =5; 
var arrayY =1; 
var array=new Array(arrayX); 
var planetIndex=0; 

for (x=0; x<array.length; x++) 
{array [x] = new Array(arrayY);} 

function insert(val1){ 
    array[planetIndex][0]=val1; 
    planetIndex++; 
    document.getElementById('name').value = ''; };

function worldChange() {
        var newplanet = ????????????
        var whichWorld = Math.floor(Math.random()*newplanet.length); 
        return planetIndex[whichWorld];

        var planets = document.getElementsByClassName("world-name")
              for (var i=0; i < planets.length; i++) {
                planets[i].innerHTML = worldChange();};
        };

</script>
<body> 
   <div>  
    <form> 
              <input type="integer" id="name"/>
            <input type="button" value="Add Planets" onclick="insert   (this.form.name.value);"/> 
        </form>

        <input type="button" value="See planet!" onClick="worldChange()" />
        <br> Hello <span class="world-name">Earth!</span><br /> 
</div>
</body>

スクリプトの両方の要素が自分のサイトで完璧に機能するようになったので、誰かがボタンを押すたびにストーリーの人物が変わります。しかし、ご覧のとおり、私が作成した配列からプルします。ユーザーが独自の名前のリストを入力できるように、ユーザーが作成した配列から取得したいと考えています。

したがって、このスクリプトは正常に機能します。

function newGuy() {
        var guys = new Array ("Jeff", "Mike", "George", "Harold");
        var whichGuy = Math.floor(Math.random()*guys.length); 
        return guys[whichGuy];}

var guy = document.getElementsByClassName("guy")
     for (var i=0; i < guy.length; i++) {
        guy[i].innerHTML = newGuy();}

そして、このスクリプトは単独で動作します:

var arrayX =5; 
var arrayY =1; 
var array=new Array(arrayX); 
var guyIndex=0; 

for (x=0; x<array.length; x++) 
{array [x] = new Array(arrayY);} 

function insert(val1){ 
    array[guyIndex][0]=val1; 
    guyIndex++; 
    document.getElementById('name').value = ''; };

それらを組み合わせる方法に困惑しただけです。

4

1 に答える 1

0

スクリプトには多くの問題がありますが、それを機能させる方法についてのアイデアを提供するために:

var planets = [];
// define how many planets there will be initially
var initialLength = 5;

// add the initital planets
for (x = 0; x < initialLength; x++) {
    planets.push("planet" + x);
}

function insert() {
        var planetToInsert = document.getElementById('name').value;
    if (planetToInsert) {
        // add the input to the array of planets
        planets.push(planetToInsert);
        document.getElementById('name').value = '';
    } else {
        alert("please enter a value");
    }
}


function worldChange() {
    // randomly pick an index
    var whichWorld = Math.floor(Math.random() * planets.length);
    document.getElementById('world-name').innerHTML = planets[whichWorld];
}

作業サンプルはこちら

コード内の問題を見つけるには、jsFiddle が非常に役立ちます。JSlint を実行して基本的なエラーを見つけ、貧弱なデバッグとしてアラートを設定します。

優れた JavaScript の本として、JavaScript パターンをお勧めします

于 2012-08-10T21:00:41.610 に答える