我已經偶然發現了一個問題,並可以使用您的幫助來找出處理它的一些邏輯。基本上我有一個動態訂單表單,用戶根據用戶選擇的選項使用JavaScript實時更新價格。問題是,有3個動態下拉列表可能並不全都存在,即有時會出現a-c下拉列表,有時候只會出現a,或者只有a和b等。我得到的錯誤是對於任何未定義的選擇變量是未定義的(顯然)。我已經實施了一些js來處理,但沒有成功。這裏是我正在使用的代碼:確定動態選擇是否使用javascript定義
PHP:
$a_sql = ("SELECT * FROM prod_add WHERE pid = '$id' AND `group` = 'a'");
$a_query = mysqli_query($dbconx, $a_sql);
$a_Count = mysqli_num_rows($a_query);
if ($a_Count > 0) {
while($row = mysqli_fetch_array($a_query)) {
$a_option = $row["option"];
$a_value = $row["value"];
$a_results .= "<option value='$a_value'>$a_option</option>";
}
}
if($a_Count > 0) {
$a_opt = "<select class='opt_drop' id='optA' name='optA' onchange='getTotal()'>$a_results</select>";
} else {
$a_opt = "";
}
沖洗和重複對於b &ç
HTML:
<h2 id="totalPrice">$<?php echo $base_cost ?></h2> <br />
<input type="hidden" name="base_cost" id="base_cost" value="<?php echo $base_cost ?>" />
<?php echo $a_opt; ?><br />
<?php echo $b_opt; ?><br />
<?php echo $c_opt; ?>
Quantity:
<select name="quantity" id="quantity" onchange="getTotal()">
<option value="1"> 1 </option>
<option value="2"> 2 </option>
<option value="3"> 3 </option>
<option value="4"> 4</option>
<option value="5"> 5 </option>
<option value="6"> 6 </option>
<option value="7"> 7 </option>
<option value="8"> 8 </option>
<option value="9"> 9 </option>
<option value="10"> 10 </option>
</select>
的Javascript:
<script type="text/javascript">
function getDDValue(elementID){
var value = 0;
var element = document.getElementById(elementID);
value = element.options[element.selectedIndex].value;
console.log(value);
return parseFloat(value);
}
function getBase (elementID) {
var value = 0;
var element = document.getElementById(elementID);
value = element.value;
return parseFloat(value);
}
function getTotal(){
if (typeof optA != "undefined") {
var optA = getDDValue("optA");
} else {
var optA = "0";
}
if (typeof optB != "undefined") {
var optB = getDDValue("optB");
} else {
var optB = "0";
}
if (typeof optC != "undefined") {
var optC = getDDValue("optC");
} else {
var optC = "0";
}
var quantity = getDDValue("quantity");
var base_cost = getBase ("base_cost")
var totalPrice = '0';
totalPrice = parseFloat((+base_cost + +optA + +optB + +optC) * +quantity);
console.log(totalPrice);
document.getElementById('totalPrice').innerHTML = "$" + totalPrice;
}
getTotal();
</script>
正如你在上面看到的,我試着確定這個值是否是未定義的,是否只是給它一個0的值。雖然我不知道爲什麼,但這並不奏效。
謝謝您提供的信息豐富的回覆。值是否爲空,未定義等並不重要,重要的是,如果管理員只上傳了兩類選擇(如A和B),那麼javascript將忽略c因爲它不存在。這兩個例子(代碼和三等於比較器)沒有工作,雖然我不知道爲什麼。我仍然收到錯誤'Uncaught TypeError:無法讀取null products.php?id = 1的屬性'選項':27 getDDValue products.php?id = 1:27 getTotal products.php?id = 1:54 (匿名函數)'在javascript控制檯中。 – moqa
另外我認爲邏輯是在你發佈的代碼中倒退,我試圖做的是如果它被定義,然後將變量設置爲選擇的動態選項,否則,如果它是未定義的,值爲0,因爲後面的公式基本上是'(base_cost + a + b + c)* quantity',儘管扭轉它也不起作用。 – moqa
哎呀,是邏輯倒退,但只要你得到的概念。查看我編輯的內容,以瞭解TypeError發生的情況 – argo49