[英]Why isn't this javascript with else if working?
對不起,我不能再具體了 - 我不知道問題出在哪里。 我是一個初學者,我已經添加了我知道的所有內容以添加到編碼中,但是當我按下按鈕時沒有任何反應。 我不知道在這一點上是否是編碼中的錯誤,或者語法錯誤導致它無法正常工作。
基本上我試圖讓這個函數“翻錄它”來瀏覽杜威十進制數列表,更改其中的一些,並返回新的數字和一條消息說它已被更改。 還有一個標記為“無數字”的必須返回錯誤(不一定是警告框,同一空間中的消息也可以。)
我是一個初學者,並不是特別擅長這個東西,所以請溫柔! 非常感謝!
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript">
function RipIt()
{
for (var i = l; i <=10 i=i+l)
{
var dewey=document.getElementById(i);
dewey=parseFloat(dewey);
if (dewey >= 100 && 200 >= dewey)
{
document.getElementById('dewey'+ 100)
}
else if (dewey >= 400 && 500 >= dewey)
{
document.getElementById('dewey'+ 200)
}
else if (dewey >= 850 && 900 >= dewey)
{
document.getElementById('dewey'-100)
}
else if (dewey >= 600 && 650 >= dewey)
{
document.getElementById('dewey'+17)
}
}
}
</script>
</head>
<body>
<h4>Records to Change</h4>
<ul id="myList">
<li id ="1">101.33</li>
<li id = "2">600.01</li>
<li id = "3">001.11</li>
<li id = "4">050.02</li>
<li id = "5">199.52</li>
<li id = "6">400.27</li>
<li id = "7">401.73</li>
<li id = "8">404.98</li>
<li id = "9">no number</li>
<li id = "10">850.68</li>
<li id = "11">853.88</li>
<li id = "12">407.8</li>
<li id = "13">878.22</li>
<li id = "14">175.93</li>
<li id = "15">175.9</li>
<li id = "16">176.11</li>
<li id = "17">190.97</li>
<li id = "18">90.01</li>
<li id = "19">191.001</li>
<li id = "20">600.95</li>
<li id = "21">602.81</li>
<li id = "22">604.14</li>
<li id = "23">701.31</li>
<li id = "24">606.44</li>
<li id = "25">141.77</li>
</ul>
<b> </b>
<input type="button" value="Click To Run" onclick="RipIt()">
<!-- <input type="button" value="Click Here" onClick="showAlert();"> -->
</body>
</html>
我看到一些問題:
您需要確保HTML中的id
值與實際提供給getElementById
匹配。 例如,你有document.getElementById('dewey'+ 100)
,它將尋找id
值為"dewey100"
的元素,但是我沒有在你的標記中看到任何帶有該id
值的元素。
您似乎鍵入了小寫字母l
,您打算鍵入數字1
(在for
循環中)。
這段代碼:
var dewey=document.getElementById(i); dewey=parseFloat(dewey);
...從i
檢索具有id
的元素(到目前為止一直很好),然后嘗試將該元素解析為浮點數。 DOM元素是對象,將它們傳遞給parseFloat
將不會做任何有用的事情。 :-)在這種情況下,如果你試圖解析元素的內容,你可以通過innerHTML
屬性或(在大多數瀏覽器上) innerText
只獲取文本。 所以也許:
var dewey=document.getElementById(i); dewey=parseFloat(dewey.innerHTML);
這條線
document.getElementById('dewey'+ 100)
......本身就是一個“無所事事”的行:它查找元素,但隨后不對它做任何事情。 我建議改變,但我不知道你要用這個元素做什么。 :-)
你可能沒有意識到它(是新的),但你的瀏覽器幾乎肯定有一個非常強大的工具,稱為“調試器”。 查看菜單,但在大多數瀏覽器中,您可以使用F12鍵訪問“開發工具”。 然后轉到結果窗口中的“源”或“代碼”選項卡,它將顯示您的代碼。 如果單擊一行的左側,在大多數調試器中設置一個斷點 ,該斷點將在該點停止代碼,這樣您就可以看到正在發生的事情。 值得花些時間學習使用該工具,以便您可以實際觀察代碼運行情況。
編輯我的舊答案......
對於HTML,我刪除了列表項中的id,因為您可以找到更好的方法來迭代它們。 這樣,您可以在添加li時添加新ID。 見下文:
<h4>Records to Change</h4>
<ul id="myList">
<li>101.33</li>
<li>600.01</li>
<li>001.11</li>
<li>050.02</li>
<li>199.52</li>
<li>400.27</li>
<li>401.73</li>
<li>404.98</li>
<li>no number</li>
<li>850.68</li>
<li>853.88</li>
<li>407.8</li>
<li>878.22</li>
<li>175.93</li>
<li>175.9</li>
<li>176.11</li>
<li>190.97</li>
<li>90.01</li>
<li>191.001</li>
<li>600.95</li>
<li>602.81</li>
<li>604.14</li>
<li>701.31</li>
<li>606.44</li>
<li>141.77</li>
</ul>
<input type="button" value="Click To Run" onclick="RipIt()">
對於你的javascript,我找到了li的數量並存儲在兒童中。 然后找到這個數組的長度並設置為'length'。 然后我從children數組中的每個子項中拉出innerHTML,然后解析它。 然后我運行條件並根據子項的值創建一個新值。
最后,該值存儲在相關的子li項中。
JavaScript:
function RipIt() {
var children = document.getElementById("myList").getElementsByTagName("li"),
length = children.length;
for (var i = 0; i < length; i++) {
var child = children[i].innerHTML,
newValue;
child = parseFloat(child);
if (child >= 100 && 200 >= child) {
newValue = child + 100;
} else if (child >= 400 && 500 >= child) {
newValue = child + 200;
} else if (child >= 850 && 900 >= child) {
newValue = child - 100;
} else if (child >= 600 && 650 >= child) {
newValue = child + 17;
}
children[i].innerHTML = newValue;
}
}
您可能需要處理條件(if / else)以獲得您想要的內容。 您沒有真正指定在答案中需要執行的每個條件,因此我只使用了原始代碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.