获取javascript以显示基于文本字段的div

时间:2010-11-02 23:31:32

标签: javascript html javascript-events

嘿所有,我一直在研究这个javascript文件,以便当有人输入更多文本时,他们会看到一个不同的div显示他们一段代码(很快就会成为paypal按钮)。

出于某种原因,我无法让div出现。我已经使用了onchange和onkeyup,似乎都没有帮助。所以,这是代码:

<br/>Word Count: <input type="text" id="c" name="c" value="311" size="5"
onkeyup="cnt(document.script.w,this)" onchange="showDiv()"/>
</form>

<div id="div1" style="display:none">
Price level 1!
</div>

<div id="div2" style="display:none">
Price level 2!
</div>

<div id="div3" style="display:none">
Price level 3!
</div>

<div id="div4" style="display:none">
Price level 4!
</div>

<div id="div5" style="display:none">
Price level 5!
</div>

<div id="div6" style="display:none">
Price level 6!
</div>

<div id="div7" style="display:none">
Price level 7!
</div>

脚本

function showDiv() {
    var myNumValue = document.getElementById('c').value;
    var myNum = parseInt(myNumValue);
    var price1=0;
    var price2=100;
    var price3=200;
    var price4=300;
    var price5=400;
    var price6=500;
    var price7=600;

    if (myNum >= price1 && myNum <= price2) {
        document.getElementById('div1').style.display = 'block';
    }
    elseif(myNum >= price2 && myNum <= price3) {
        document.getElementById('div2').style.display = 'block';
    }
    elseif(myNum >= price3 && myNum <= price4) {
        document.getElementById('div3').style.display = 'block';
    }
    elseif(myNum >= price4 && myNum <= price5) {
        document.getElementById('div4').style.display = 'block';
    }
    elseif(myNum >= price5 && myNum <= price6) {
        document.getElementById('div5').style.display = 'block';
    }
    elseif(myNum >= price6 && myNum <= price7) {
        document.getElementById('div6').style.display = 'block';
    }
    else {
        document.getElementById('div7').style.display = 'block';
    }
}

所以,关于如何让这个人工作的任何想法。我知道我可能只是缺少一些简单的东西,只需要几双额外的眼睛。

3 个答案:

答案 0 :(得分:4)

elseif =&gt; amurra指出的else if问题是您的一般问题,但我还想建议一种使用元素ID数组而不是ifelse if s的替代方法。例如:

function showDiv() {
    var myNumValue = document.getElementById('c').value,
        myNum = Math.min(Math.floor(parseInt(myNumValue, 10) / 100), 6),
        myDiv = ["div1", "div2", "div3", "div4", "div5", "div6", "div7"][myNum];

    document.getElementById(myDiv).style.display = "block";
}

更整洁,对吗?实例:http://jsfiddle.net/AndyE/FFeLC/1/ :-)

但请注意,它并不完全相同。在您的示例中,如果值为300,则会显示div3。在我的例子中,将显示div4(我认为更有可能是你需要的)。如果您希望它在代码中如何使用它,则可以在解析之后(除以100之前)从myNumValue中减去0到0.1之间的任何数量,以获得与您的代码相同的结果。

此外,这可能是您真正想要的:http://jsfiddle.net/AndyE/FFeLC/2/

答案 1 :(得分:2)

elseif之间的空格可能有助elseif =&gt; else if

答案 2 :(得分:1)

您可以根据输入改变一个特定div的内容,而不是使用多个div。像...这样的东西。

<br/>Word Count: <input type="text" id="c" name="c" value="311" size="5"
onkeyup="showDiv()" onchange="showDiv()"/>
</form>

<div id="priceInfo">
    Enter Price
</div>

JS

function showDiv() {

    var myNumValue = document.getElementById('c').value,
        myNum = parseInt(myNumValue),
        priceFound = false;
    var priceBank = {
        'Price Level 1!': 0,
        'Price Level 2!': 100,
        'Price Level 3!': 200,
        'Price Level 4!': 300,
        'Price Level 5!': 400,
        'Price Level 6!': 500,
        'Price Level 7!': 600
    }

    for (var price in priceBank) {
        if ( myNum <= priceBank[price]) {
            document.getElementById('priceInfo').innerHTML = price;
            priceFound = true;
            break;
        }
    }
    if( !priceFound ) {
        document.getElementById('priceInfo').innerHTML = 'no price level found for this amount.';
    }
}

此处示例:JSBin.com