Если в функции в OnClick, я говорю:Почему я не могу объединить эти функции JS?
offset=parseFloat(document.getElementById("offsetId").value); //value=-2
center=sp+offset; // sp is a float == 190
alert("center="+center);
я получаю "центр = 190 [объект HTMLInputElement]"
Если я отделить функции:
offset=document.getElementById("offsetId");
offset=parseFloat(offset.value);
center=sp+offset;
alert("center="+center);
I получить ту же ошибку.
Но если я сделать это таким образом
offset=document.getElementById("offsetId");
center=sp+parseFloat(offset.value);
alert("center="+center);
я получить правильный ответ, центр = 188.
Почему я не могу объединить функции, как в первых двух примерах? Они кажутся мне идентичными.
EDIT: Вот пример кода, который производит «невозможные» результаты:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title> New Document </title>
</head>
<body>
<script>sp=parseFloat(190.); </script>
<!-- same result with sp=190.; sp=Number(190.); sp=Number("190."); -->
<form>
<p>Enter Offset <input id="offsetId" type="text" name="offset" value=0> <!-- eg -2 -->
<p>
<input
type="button"
name="go"
value="Do the Plot"
onclick='
alert("at19: sp = "+sp+", typeof sp=", typeof sp);
// shows: at19: sp = 190, typeof sp=
offset=parseFloat(document.getElementById("offsetId").value);
alert("at22, offset="+offset+", typeof offset="+typeof offset);
// shows: at23, offset=[object HTMLInputElement], typeof offset=object
center=sp+offset;
alert("at25: center="+center);
// shows: at24: center=190[object HTMLInputElement]
// alternate 1
offset = parseFloat(offset.value);
center=sp+offset;
alert("at31: offset="+offset+", center="+center);
// shows: at31: offset=[object HTMLInputElement], center=190[object HTMLInputElement]
// alternate 2
offset=document.getElementById("offsetId");
center=sp+parseFloat(offset.value);
alert("at37: offset="+offset+", center="+center);
// shows: at36: offset=[object HTMLInputElement], center=188
'
>
</form>
</body>
</html>
Обратите внимание, что последний метод дает правильный ответ. Я подозреваю, что я не могу получить sp, чтобы показать тип может быть значительным.
Ни [первые] (https://jsfiddle.net/pdk6L6r4/) или [второй] (https://jsfiddle.net/pdk6L6r4/1/) примеры не производить выход вы утверждаете, что он делает. Невозможно, чтобы 'parseFloat' возвращал HTML-элемент или строку, представляющую элемент HTML, или любое другое значение, которое создавало бы выход в вашем вопросе. Включите рабочий образец, который воспроизводит вашу проблему. Используйте встроенный редактор кода. – meagar
Я приводил пример (теперь полная программа), которая дает выход настолько необычный, что вы утверждаете, что это невозможно, и вы думаете, что его не стоит публиковать? Пожалуйста, просмотрите программу, которую я опубликовал, а также вывод «невозможного» предупреждения. – user1067305
Бремя на вас, чтобы предоставить код, который воспроизводит вашу проблему, и вы ** ** не смогли этого сделать. Теперь, когда вы создали код, который ** делает ** воспроизводит вашу проблему, проблема и решение очевидны. – meagar