所以我有以下代碼:
function domidpoint() {
var x1 = document.getElementById("x1").value;
var y1 = document.getElementById("y1").value;
var x2 = document.getElementById("x2").value;
var y2 = document.getElementById("y2").value;
var midpointx, midpointy;
if(x1, y1, x2, y2 != '') {
midpointx = (x1 x2) / 2;
midpointy = (y1 y2) / 2;
document.getElementById("result").innerHTML = midpointx.toString() "," midpointy.toString();
}
}
但是當我使用值 (-6,8),(6,-7) 運行它時,它應該回傳 (0,0.5) 的中點,我得到輸出 -33,NaN。有誰知道這是為什么?我對javascript相當陌生,所以如果我在做一些愚蠢的事情,請隨時告訴我。
uj5u.com熱心網友回復:
value回傳一個字串;using 表示數字的加法,但字串的連接。(看什么x1 x2和y1 y2是看區別。)
uj5u.com熱心網友回復:
當您從 DOM 讀取某些內容時,它會回傳一個字串,并且當您嘗試對其執行任何操作時。會發生這樣的事情:
const midPointX = '-66'/2;
const midPointY = '8-7'/2;
第一點仍然有效,這就是您得到-33 的原因。如果您將順序更改為 (x2 x1),您將得到 NaN。
'8-7'不是有效數字,這就是您獲得 NaN 的原因。
注意:您對字串執行算術運算(-,*,/,%),除了 add( )。
'1' '2'; // '12'
'1' - '2'; // -1
要解決這個問題,您必須將字串轉換為數字。
const x1 = '-6', y1 = '8', x2 = '6', y2 = '-7';
const midPointX = ( x1 x2) / 2;
const midPointY = ( y1 y2) / 2;
console.log(midPointX, midPointY);
uj5u.com熱心網友回復:
您的代碼有兩個問題,第一個是您有語法錯誤,if(x1, y1, x2, y2 != '')您應該單獨進行每項檢查x1 != ''并用AND運算子將??它們分開,&&請參見下面的代碼
第二個問題是document.getElementById("x1").value回傳一個stringnotnumber所以你需要在使用它之前將它轉換為數字以避免不必要的行為
function domidpoint() {
var x1 = document.getElementById("x1").value;
var y1 = document.getElementById("y1").value;
var x2 = document.getElementById("x2").value;
var y2 = document.getElementById("y2").value;
var midpointx, midpointy;
if (x1 != "" && x2 != "" && y1 != "" && y2 != "") {
midpointx = (Number(x1) Number(x2)) / 2;
midpointy = (Number(y1) Number(y2)) / 2;
document.getElementById("result").innerHTML = midpointx.toString() "," midpointy.toString();
}
}
最后,您似乎是 javascript 新手,所以這里有兩個很好的資源可以幫助您了解 javascript 基礎知識
https://www.youtube.com/watch?v=W6NZfCO5SIk ---(視頻) https://developer.mozilla.org/en-US/docs/Learn/Getting_started_with_the_web/JavaScript_basics --(文章)
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/471320.html
標籤:javascript 数学
上一篇:在添加元素之前制作空表
