2017-08-07 39 views
1

我有一個輸入形式,例如在Javascript中使用帶點/句點的HTML ID

<input type="checkbox" id="a.b"> 

我想打印它的值,只要我點擊它使用console.log() JavaScript函數。

<input type="checkbox" id="a.b" onclick="console.log(a.b.value)"> 

很顯然,Javascript抱怨a未定義,並且值b的屬性不存在。我發現這樣做的唯一方法是使用_而不是a來重命名我的字段。 (期)。我結束了

<input type="checkbox" id="a_b" onclick="console.log(a_b.value)"> 

有沒有更好的方法?我可以在標識符中轉義點嗎?我知道這一點。是Javascript標識符中的無效字符,但它不在HTML中。我可以使用jquery解決這個問題嗎?

+0

A *更好的方法是使用外部事件處理程序 –

+0

@SlinglingArcher有趣。你有什麼好的指針? –

+1

https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener這裏是addEventListener的MDN,與'this.value'結合使用。像onclick =「derp()」這樣的內聯事件被認爲是不好的做法。 –

回答

4

Javascript使用.表示法使用對象。你只能在使用String時逃脫。所以,答案是否定的

爲什麼不直接使用this

<input type="checkbox" id="a.b" onclick="console.log(this.value)">

如果你用它玩,那是不錯,但有人在評論中已經指出,不使用內聯事件。相反,添加的元素事件

var checkbox = document.getElementById("a.b"); 
 
    checkbox.onchange = function() { 
 
    if(this.checked) { 
 
     console.log("checked"); 
 
     } else { 
 
     console.log("un checked"); 
 
     } 
 
    }
<input type="checkbox" id="a.b">

0

您可以通過執行console.log(window["a.b"].value)訪問它。我不會建議這樣直接訪問元素不是最佳實踐,但它會做你在問什麼。

相關問題