1

ユーザーが198.162.0.0〜198.162.0.45の範囲を表す198.162.0.0/45の形式でIPアドレスを入力/変更できる入力フィールドを追加したい

私が持っているものはほとんど機能しますが、完全に正しいフォーマットを許可していません。次のいずれかを入力すると、正常に機能します。198 / 45、198.168、または198.168.0.45

しかし、198.168.0/24または198.168.0.0/24を追加しようとするとすぐに

フィールドを分割せずに198.168.0.0/24を追加できるようにしたかったのですが、必要に応じて追加できます。

動的要素が入力フィールドを含むdivタグに追加されると、スクリプトエラーが発生します。

基本的に私のセットアップはこれで、空のdivタグに以下を追加します。newIpRangeは、問題を生成するtesthtmlを含む198.168.0.0/24EDITなどの文字列として入力されます。

<html>
<head>
<title>Test IP</title>

<script type="text/javascript">

function onload(range){

var e = document.getElementById("_main");
e.innerHTML = getTag(range);

}

function getTag(range){
return "<div class='input-append'  ><input  type='text' value='" + range + "' ></input><div>";
}

</script>
</head>
<body onload="onload(198.168.1.0/24);">
<div id="_main" >

</div>
</body>
</html>

これを引き起こしているのは何ですか?私が本当に興味を持っているのは、なぜそれがエラーを与えるのか、他の場合ではないのかということです

次の行を追加したときにスクリプトから取得したエラーは次のとおりです。SCRIPT1006:期待される')'

4

1 に答える 1

0

私が作成したサンプルに少し時間を費やした後、最終的に実現に至りました。それは、JavaScript がどのように値を解析しているかということです。

10.12/24 の場合、そこに余分なピリオドを追加するとすぐに除算のある数値として評価され、数値として評価できなくなります。これを解決するために、文字列リテラルに入れるとすべてがクリーンアップされます!

これを修正するには、ipcallback を一重引用符で囲み、javascript に文字列であることを伝えます。

<script>
</head>
<body onload="onload('198.168.1.0/24');">
<div id="_main" >
于 2013-01-21T22:35:31.097 に答える