簡體   English   中英

為什么這個javascript與其他工作不一致?

[英]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>

我看到一些問題:

  1. 您需要確保HTML中的id值與實際提供給getElementById匹配。 例如,你有document.getElementById('dewey'+ 100) ,它將尋找id值為"dewey100"的元素,但是我沒有在你的標記中看到任何帶有該id值的元素。

  2. 您似乎鍵入了小寫字母l ,您打算鍵入數字1 (在for循環中)。

  3. 這段代碼:

     var dewey=document.getElementById(i); dewey=parseFloat(dewey); 

    ...從i檢索具有id的元素(到目前為止一直很好),然后嘗試將該元素解析為浮點數。 DOM元素是對象,將它們傳遞給parseFloat將不會做任何有用的事情。 :-)在這種情況下,如果你試圖解析元素的內容,你可以通過innerHTML屬性或(在大多數瀏覽器上) innerText只獲取文本。 所以也許:

     var dewey=document.getElementById(i); dewey=parseFloat(dewey.innerHTML); 
  4. 這條線

    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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM