0

私は JavaScript を初めて使用します。JavaScript 内の配列に関して問題があります。要点を言えば、HTML コードがあります。

<input type="text" name="conPrice" id="conPrice" size="16" maxlength="128"/>
<input type="text" name="OverP" id="OverP" size="16" maxlength="128"  />
<div id="slider"></div> //Slider

スライダーから取得される数量の最初のフィールド。SQL テーブルの価格の 2 番目のフィールド

SQL は、次の 4 つのフィールドがあるという条件に基づいています。

| ID | MIN | MAX | PRICE |

スライダーの値に応じて、フィールドOverPで価格列の価格を取得しようとしています。たとえば、スライダーの数字が 6 で、MIN と MAX が 1 から 7 の間にある場合、価格は 10 になります。

私はこのSQLを持っています:

<?php
$x = mysql_query("SELECT p_max AS max FROM dsd_price");
$y = mysql_query("SELECT p_min AS min FROM dsd_price");
$z = mysql_query("SELECT p_price AS price FROM dsd_price");
while ($x_array = mysql_fetch_array($x)){$max[] = $x_array;}
while ($y_array = mysql_fetch_array($y)){$min[] = $y_array;}
while ($z_array = mysql_fetch_array($z)){$price[] = $z_array;}
?>

そして最後に私のJS:

<script>
$(document).ready(function slider() {
$( "#slider" ).slider({
    value:1,
    min: 0,
    max: 201,
    step: 1,
    slide: function( event, ui ) {
//Its setting the slider value to the element with id "conPrice" 
$("#conPrice" ).val(ui.value);
    }
});
});

$(document).ready(function calcul() {
var frm = document.dsd_form;
var quant = frm.conPrice;
var overp = ['<?php echo implode("','", $price); ?>'];
var mini = ['<?php echo implode("','", $min); ?>'];
var maxi = ['<?php echo implode("','", $max); ?>'];
for(index = 0; quant > mini[index], quant < maxi[index]; index++){
    $( "#OverP" ).val( overp[index] );
})
}   
</script>

希望する結果が得られません。JS に問題があることはわかっています。できるだけ早く私のトピックへの提案を希望します。

更新: これまでのところ、テスト ページのコード全体を入れています。スライダーはスライドし、スライダーの値は conPrice に処理されますが、計算は機能しません...

<script src="jquery.js" type="text/javascript" charset="utf-8"></script>
<!-- For slider -->
<link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/themes/base/jquery-ui.css" rel="stylesheet" type="text/css"/>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.min.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.min.js"></script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.7.2/jquery-ui.min.js"></script>

<!-- Slider JS -->
<?php
$x = mysql_query("SELECT p_max AS max FROM dsd_price");
$y = mysql_query("SELECT p_min AS min FROM dsd_price");
$z = mysql_query("SELECT p_price AS price FROM dsd_price");
while ($x_array = mysql_fetch_array($x)){$max[] = $x_array['max'];}
while ($y_array = mysql_fetch_array($y)){$min[] = $y_array['min'];}
while ($z_array = mysql_fetch_array($z)){$price[] = $z_array['price'];}
?>
<script>
$(document).ready(function slider() {
$( "#slider" ).slider({
    value:1,
    min: 0,
    max: 201,
    step: 1,
    slide: function( event, ui ) {
  //Its setting the slider value to the element with id "conPrice" 
  $("#conPrice" ).val(ui.value);
    }
 });
    function price(){
    var frm = document.dsd_form;
    var quant = frm.conPrice;
    var overp = ['<?php echo implode("','", $price); ?>'];
    var mini = ['<?php echo implode("','", $min); ?>'];
    var maxi = ['<?php echo implode("','", $max); ?>'];
    for(var index = 0; quant > mini[index], quant < maxi[index]; index++){
        $( "#OverP" ).val( overp[index] );
    }
}
});
</script>
</head>
<body>
<form id="dsd_form" name="dsd_form" action="db_create_sql.php" method="post" class="niceform">
<fieldset>
       <dl>
            <dt><label for="conPrice">Price:</label></dt>
            <dd><input type="text" name="conPrice" id="conPrice" size="16" maxlength="128" />
            <input type="text" name="OverP" id="OverP" size="16" maxlength="128" />
            <div id="slider" ></div>
            </dd>
        </dl>
</fieldset>
</form>
</body>
</html>

SQL データベースを持っている:

p_id | p_min | p_max | p_price
  1        1      1       11
  2        2      5       13
4

1 に答える 1

0

かっこがcalcul()関数と一致していないようです。これを試して:

$(document).ready(function calcul() {
var frm = document.dsd_form;
var quant = frm.conPrice;
var overp = ['<?php echo implode("','", $price); ?>'];
var mini = ['<?php echo implode("','", $min); ?>'];
var maxi = ['<?php echo implode("','", $max); ?>'];
for(index = 0; quant > mini[index], quant < maxi[index]; index++)
{
    $( "#OverP" ).val( overp[index] );
}});
于 2012-10-02T18:13:27.140 に答える